对象的创建方法
①var obj={} plainObject(对象字面量/对象直接量)
②构造函数创建
1)系统自带的构造函数 Object araay number
var obj=new Object()
2)自定义的构造函数(自定义构造函数与普通函数看着没有区别,定义时为了区分,要符合 大坨峰式命名规则:既每个单词首字母都大写)
构造函数内部原理:
new之后,函数内部会自动隐式的 添加 三段式 //为隐式自动添加的内容
例如:
new Person();
function Person(name,height){
//var this={}
this.name=name;
this.height=height;
this.say=function(){
console.log(this.say);
}
//return this; 可手动return一个对象,但不能返回一个原始值,若写返回原始值,实际还是隐式的返回this
}
原始值不可能有属性和方法,但经过包装类
例如 : var str="abc";
str.length=3
原始值不可能有属性和方法,但会隐式的发生:
var str="abc";
str.length=3
//new String(str).length=3; delete
str.length=3 //访问时再次new String(str).length=3; delete 这两个就不是一个对象了,所以显示undefined
typeof 运算符把类型信息当作字符串返回
例题:
var str="abc";
str += 1;
var test = typeof(str);
if(test.length == 6){
test.sign = "typeof的返回结果是String";
}
console.log(test.sign);
输出为 undefined
原因:
test是原始值,无属性和方法,运行test.sign = "typeof的返回结果是String";时会自动隐式 new String(test).sign="xxx" delete
下面打印时又会自动隐式new String(test).sign delete 所以输出undefined