JS对象
对象的创建方法:
1 var Object = {} plainObject 对象字面量/对象直接量
2 构造函数(两种)大驼峰式命名规则
1)系统自带的构造函数 Object() new Object()
2)自定义
3 Object.create(原型);
构造函数自定义方式内部原理:
构造函数三段式
function Student(name,age,sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
首先实现第一步隐式变化:
1在逻辑的顶端生成 var this = {}
function Student(name,age,sex) {
//var this = {};
this.name = name;
this.age = age;
this.sex = sex;
}
2然后根据形式参数的个数对this 进行增加属性并赋值
那么这个函数的 AO 可以大致理解为: AO{ this:{name:'zhangsan' ,age:18,sex:'male' };
3最后将这个return返回
function Student(name,age,sex) {
1//var this = {
2// name:"zhangsan",
// age:18,
// sex:"male"
// };
this.name = name;
this.age = age;
this.sex = sex;
3//return this;
}
Object.create(原型)创建对象
var person = {name:"zsf",age:120};
var zsf = Object.create(person);
包装类
-
Boolean
-
String
- Number
原始值不能有属性和方法,当给它们添加属性的时候系统会自动进行包装类并销毁。
var num = new Number(3);
var str = new String("chen");
var num = 3;
num.len = 2;
//new Number(3).len =2; delete
console.log(num.len);//endefined
var str = "abcd";
str.length = 2;
//new String('abcd).length = 2; delete;
console.log(str);//abcd
//new String('abcd).length
//.length是string系统自带的属性。
console.log(str.length);//4
var str = "abc";
str += 1;
var test = typeof(test);
if(test.length == 6){
test.sign = "111";
//new String(test).sign = "111";
}
//new String(test).sign
console.log(test.sign);
//undefined