咸鱼前端—js 创建对象
可以通过对象直接量,关键字new和(ECMA5中的)Object.create()函数来创建对象
对象直接量
对象直接量是由若干名/值对组成的映射表,名/值对中间用冒号分割,名/值对之间用逗号分割。整个映射表用花括号括起来
var a = {} //没有任何属性的对象
var b = {x:0,y:0} //两个属性
var b2 = {x:b.x,y:b.y} //更复杂的值
var book = {
"bks title":"JS", //属性名中有空格,必须用字符串表示
"sub-tit":"XianYu", //属性名中有连字符,必须用字符串表示
"for":"xianyumgf", //属性名中有保留字,必须用引号
auther:{ //属性的是可以是一个对象
firstname:"dc"
lastname:"dg"
}
}
注意:在ECMA5中,保留字可做不带引号的属性名。ECMA3中则必须用引号,在ECMA5中对象直接量中最后一个属性后的逗号会被忽略,但在ECMA3中IE会报错。
通过new创建对象
new运算符创建并初始化一个新对象。关键字new后跟随一个函数调用。这里的函数称作构造函数,构造函数用以初始化一个新创建对象
var a = new Object(); //创建一个空对象和{}一样
var b = new Arrat(); //创建一个空数组和[]一样
var c = new Date(); //创建一个表示当前时间的Date对象
var o = new RegExp("JS"); //创建可以进行模式匹配的RegExp对象
除了这些内置构造函数,用自定义构造函数来创建初识化新对象也OK
Object.create()
使用Object.create()之前先来看什么是原型。
ECMA5定义了一个名为Object.create()的方法,他创建一个新对象,其中第一个参数就是这个对象的原型。 Object.create()提供第二个可选参数,用以对对象的属性进行进一步描述。
Object.create()是一个静态函数,而不是提供给某个对象调用的方法。使用它只需传入所需的原型对象即可:
var o = Object.create({x:1,y:2}); //o继承了属性x和y
可以通过传入参数null来创建一个没有原型的对象,但通过这种方式创建对象不会继承任何东西。
var o1 = Object.create(null); //o1不继承任何属性和方法
如果想创建一个普通的空对象(比如{}或new Object()创建的对象),需要传入Object.prototype:
var o2 = Object.create(Object.prototype);
//o2和{},new Object()一样
自定义构造函数创建对象
自定义一个构造函数,创建对象。
函数和构造函数区别:名字首字母是否是大写
function Person(name,age){
this.name = name;
this.age = age;
this.showTime = function(){
console.log("俺是"+this.name+"今年"+this.age+"岁")
}
}
var obj = new Person("咸鱼王",66);
obj.showTime();
来源:CSDN
作者:咸鱼梦工坊
链接:https://blog.csdn.net/weixin_45020839/article/details/104629792