方法
//函数也可以称为对象的属性
//如果一个函数作为一个对象的属性保存
//那我们称这个函数是这个对象的方法
//调用document的write方法
document.write();
//调用函数就称调用函数的方法(Method)
//创建一个对象
var obj1 = new Object();
//向对象中添加属性
obj1.name = "猪头";
obj1.age = 19;
//对象的属性值可以是任何的数据类型,也可以是个函数
obj1.SayName = function(){
console.log(obj1.name);
}
函数
function hah(){
console.log(obj1.name);
}
//调用obj1的SayName方法
obj1.SayName();
//调函数
hah()
//本质上是一样的
或
var obj = {
name:"猪",
age:18,
SayName:function(){
console.log(obj.name);
}
};
obj.SayName();
枚举对象中的属性
文章图片
var obj = {
name:"猪",
age:18
}
for(var n in obj){
console.log("属性名:"+ n);
console.log("属性值:"+ obj[n]);
}
作用域
- 1.全局作用域
(2)在页面打开时创建, 在页面关闭时销毁
(3)在全局作用域中:
a.创建的变量都会作为window对象的属性保存
b.创建的函数都会作为window对象的方法保存
变量的声明提前
使用var关键字声明的变量,会在所有的代码执行之前被声明(但是不会被赋值)
函数的声明提前
(1)使用函数声明形式创建的函数function 函数 (){}在所有代码执行之前先被执行,所以可以在函数声明前被调用
//函数声明,会被提前创建
a();
function a(){
console.log("hhh");
}
(2)使用函数表达式创建的函数不会被提前声明
//函数表达式,不会被提前创建
var aa = function (){
alert("edfrewd");
}
aa();
- 2.函数作用域
(2)每调用一次函数就会创建一个新的函数作用域,他们之间时互相独立的
(3)在函数作用域中可以访问到全局作用域的变量
//函数作用域的变量访问全局
var a = 10;
function b(){
console.log(a);
}
b();
(4)在全局作用域中无法访问到函数作用域的变量
//全局无法访问函数作用域的变量
function fun(){
var b = 20;
}
console.log("b:"+ b);
Uncaught ReferenceError: b is not defined
变量的声明提前
使用var关键字声明的变量,会在所有的代码执行之前被声明(但是不会被赋值)
(4)在函数中,不适用var声明的变量都会成为全局变量
this 解析器在调用函数每次都会向函数内部传递进一个隐含的参数 -->this,指向的是一个对象,这个对象我们称为函数的上下文对象,根据函数的调用方式的不同,指向不同的对象。
1.以函数的形式调用,this永远都是window
2,以方法的形式调用,this就是调用方法的那个对象
使用工厂方法创建对象 可以大批量的创建对象
function factory(name, age, gender){
var obj = new Object();
obj.name = name;
obj.age = age;
obj.gender = gender;
return obj;
}
var obj2 = factory("臭臭", 22, "男");
var obj3 = factory("大臭臭",22, "男");
var obj4 = factory("小臭臭", 22, "男");
console.log(obj2);
console.log(obj3);
console.log(obj4);
文章图片
构造函数 局限:使用工厂方法创建的对象,使用的构造函数都是Objet,所以创建的对象都是Object这个类型,就导致我们无法区分出多种不同类型的对象。
创建一个构造函数,专门用来创建person对象
构造函数就是一个普通的函数,创建方式和普通的人函数没什么分别,不同的是:
(1)构造函数习惯上首字母大写
(2)调用方式不同:
a:普通函数,直接调用
b:构造函数需要使用new关键字调用
构造函数的执行流程:
1.立即创建一个新的对象
2.将创建的对象设置为函数中的this,在构造函数中可以使用this来使用来引用新的对象
3.逐行执行函数中的代码
4.将新建的对象作为返回值返回
【JavaScript小白最全学习笔记(5)】this即为新创建的per
//构造函数
//开头大写
//使用new调用
function Person(name, age, gender){
this.name = name;
this.age = age;
this.gender = gender;
}
var per = new Person("猪猪", 18, "男");
console.log(per);
使用同一个构造函数创建的对象,我们称为一类对象,也将一个构造函数称为一个类
我们将通过一个构造函数创建的对象,称为该类的实例
使用instanceof 可以检查一个对象是否是一个类的实例
//对象 instanceof 构造函数
//语法: 对象 instanceof 构造函数 返回 true/false
console.log(per instanceof Person);
推荐阅读
- 操作系统|[译]从内部了解现代浏览器(1)
- web网页模板|如此优秀的JS轮播图,写完老师都沉默了
- JavaScript|vue 基于axios封装request接口请求——request.js文件
- vue.js|vue中使用axios封装成request使用
- JavaScript|JavaScript: BOM对象 和 DOM 对象的增删改查
- JavaScript|JavaScript — 初识数组、数组字面量和方法、forEach、数组的遍历
- JavaScript|JavaScript — call()和apply()、Date对象、Math、包装类、字符串的方法
- JavaScript|JavaScript之DOM增删改查(重点)
- javascript|vue使用js-xlsx导出excel,可修改格子样式,例如背景颜色、字体大小、列宽等
- javascript|javascript中的数据类型转换