小白道时尚
当前位置:首页 - 除了bet365网址外围 >

JavaScript——字面量、new Object()、Object.create()创建对象

2019-10-13来源:大连热线

JavaScript —— 极简主义


JavaScript——字面量、new Object()、Object.create()创建对象

点关注,不迷路~

上一篇文章提到构造函数与实例原型之间的关系——创建关系,其实就是进行了new运算。那么,我们就先来说一说使用关键字new创建对象都做了什么?

1、new关键字做了什么?

创建过程:

1) 首先,创建一个新的空对象,如: var person = {};

除了bet365网址外围2) 再次,新对象的__proto__属性指向构造函数的原型对象;即person.__proto__ === Person.prototype;

3) 然后,将构造函数中的this指向新对象,即指向person实例;

4) 再然后,执行构造函数内部的代码,将属性添加给新实例对象person;

5) 最后,返回新实例对象person;

使用代码描述过程如下:
1) var person = {};
2) person.__proto__ === Person.prototype;
3) Person.call(person)
4) 添加属性
5) return 新对象
原理:
function Person () {
// 1、2、3) 隐式操作,调用Object.create(原型) 会凭空创建一个“新”的并继承了该原型的实例对象,这里的this就是实例对象。
// var this = Object.create(Person.prototype);
// 4) 设置对象属性
this.name = 'lyl';
this.age = 18;
// 5) 隐式操作返回新对象
// return this;
}
Person.prototype = {
say: function () {
console.log('I am saying');
}
}

2、new Object() 与 Object.create()的区别与联系

var obj = {id: 123};
var obj1 = new Object(obj);
console.log(obj1);
打印结果: {id: 123}
// 1) new
function Person(){}
Person.prototype = obj;
var obj2 = new Person();
console.log(obj2);
打印结果: {}
// 2) create
var obj3 = Object.create(obj);
console.log(obj3);
打印结果: {}
// 3) 关系
console.log(obj2.__proto__ === obj3.__proto__);
console.log(obj2.__proto__ === obj);
console.log(obj3.__proto__ === obj);
打印结果: true true true

小结: Object.create(原型),即创建一个继承了该原型的空对象。

结论:

1) 对象字面量赋值比new Object()高效,是因为new关键字调用了构造函数,而字面量不会;

2) 使用new关键字创建对象的最根本原理就是在内部借用Object.create()方法来实现的,并由此才实现了原型继承!

转载文章地址:http://www.hwbdn.com/lishi/49464.html
(本文来自小白道时尚整合文章:http://www.hwbdn.com)未经允许,不得转载!
标签:
JavaScript
网站简介 联系我们 网站申明 网站地图

版权所有:www.hwbdn.com ?2017 小白道时尚

小白道时尚提供的所有内容均是网络转载或网友提供,本站仅提供内容展示服务,不承认任何法律责任。