NoteDeep

设置属性

person.age = 45 person['name']['last'] = 'Cratchit'

var myDataName = 'height'
var myDataValue = '1.75m' person[myDataName] = myDataValue
这是使用点表示法无法做到的。
也就是说,点表示法只能通过下面的形式,height只能是字面量:
person.height = xxx

"this"的含义

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运算符一起使用的时候,我们一般称这个函数为“构造函数”
new实际上会经历下面四个步骤
  • 创建一个新对象
  • 将构造函数的作用域赋给新对象
  • 执行构造函数中的代码(为这个对象添加属性)
  • 返回新对象(在构造函数本身没有return时,默认如此)
并且:
person1.constructor == Person && person1 instanceof Person // true
person2.constructor == Person && person2 instanceof Person // true

new Person()对象就继承了Person.prototypeObject.prototype的属性




方法三:Object()构造函数

创建一个空的对象。
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 + '.'); } });

方法四:使用create()方法

JavaScript有个内嵌的方法create(), 它允许您基于现有对象创建新的对象实例
var person2 = Object.create(person1);
person2.name;
person2.greeting();
create() 实际做的是从指定原型对象创建一个新的对象。这里以 person1 为原型对象创建了 person2 对象。






评论列表

    设置属性
    "this"的含义
    方法一:通过一个普通的函数(工厂模式)
    方法二:通过一个构造函数。
    方法三:Object()构造函数
    方法四:使用create()方法