person.age = 45
person['name']['last'] = 'Cratchit'
点表示法只能接受字面量作为属性名,不接受变量作为属性名
var myDataName = 'height'
var myDataValue = '1.75m'
person[myDataName] = myDataValue
也就是说,点表示法只能通过下面的形式,height只能是字面量:
greeting: function() {
alert('Hi! I\'m ' + this.name.first + '.');
}
关键字"this"指向了当前代码运行时的对象( the current object the code is being written inside )——这里即指person对象
function createNewPerson(name) {
var obj = {};
obj.name = name;
obj.greeting = function () {
alert('Hi! I\'m ' + this.name + '.');
}
return obj;
}
var salva = createNewPerson('salva');
salva.name;
salva.greeting();
关键字 new 跟着一个含参函数,用于告知浏览器我们想要创建一个对象实例
function Person(name) {
this.name = name;
this.greeting = function() {
alert('Hi! I\'m ' + this.name + '.');
};
}
var person1 = new Person('Bob');
var person2 = new Person('Sarah');
首先,当一个函数和new运算符一起使用的时候,我们一般称这个函数为“构造函数”
person1.constructor == Person && person1 instanceof Person // true
person2.constructor == Person && person2 instanceof Person // true
new Person()对象就继承了Person.prototype和Object.prototype的属性
var person1 = new Object();
person1.name = 'Chris';
person1['age'] = 38;
person1.greeting = function() {
alert('Hi! I\'m ' + this.name + '.');
}
var person1 = new Object({
name : 'Chris',
age : 38,
greeting : function() {
alert('Hi! I\'m ' + this.name + '.');
}
});
JavaScript有个内嵌的方法create(), 它允许您基于现有对象创建新的对象实例。
var person2 = Object.create(person1);
person2.name;
person2.greeting();
create() 实际做的是从指定原型对象创建一个新的对象。这里以 person1 为原型对象创建了 person2 对象。