咸鱼前端—js 创建对象

杀马特。学长 韩版系。学妹 提交于 2020-03-04 03:36:34

可以通过对象直接量,关键字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();

在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!