JavaScript中的对象实际上是键值对的集合,如何去创建一个对象呢?有以下方法:
字面量创建(Object Literal)
const circle = {
radius: 1,
location: {
x: 1,
y: 1
},
draw: function() {
console.log('draw');
}
};
当对象中有一个或多个方法,即对象具有行为性时,使用创建对象语法来创建多个对象是不妥的,解决方法是使用工厂函数或者构造函数(它们都是JavaScript的内建函数)。
工厂函数(Factory)
function createCircle(radius) {
return {
radius, //键值同名时,可以去除冗余代码比方说值(ES6新特性)
draw: function() {
console.log('draw');
}
};
}
const circle = createCircle(1);
构造函数(Constructor)
function Circle(radius) {
this.radius = radius;
this.draw = function() {
console.log('draw');
}
}
const another = new Circle(1);
我们用new关键字调用Circle函数,并且传入1作为参数,就创建了一个新的对象。
当我们使用new关键字的时候,发生了什么呢?
首先,new会创建一个空的对象{}
然后,它会设置this指向这个对象,
最后,从构造函数中返回这个对象(尽管构造函数中并没有return语句)
网友评论