[TOC]
字面量方式
var obj = {}
new 关键字
var obj = new Object()
构造函数方式
function Star(name,age) { this.name = name; this.age = age; } var obj = new Star('zz',12)
构造函数 是一种 特殊的函数,主要用来初始化 对象,为对象成员变量赋初始值,与 new 一起使用 我们可以把对象中的一些公共属性和方法抽取出来,封装到函数里面
在JS中,使用构造函数时候需要注意:
- 在内存中创建一个新的空对象
- 让 this 指向这个新的对象
- 执行构造函数里面的代码,给这个新对象添加属性和方法
- 返回这个新对象 (所以构造函数里面不需要return)
实例成员就是构造函数内部通过this添加的成员 如下列代码中uname age sing 就是实例成员,实例成员只能通过实例化的对象来访问
function Star(uname, age) { this.uname = uname; this.age = age; this.sing = function() { console.log('我会唱歌'); } } var ldh = new Star('刘德华', 18); console.log(ldh.uname);//实例成员只能通过实例化的对象来访问
静态成员 在构造函数本身上添加的成员 如下列代码中 sex 就是静态成员,静态成员只能通过构造函数来访问
function Star(uname, age) { this.uname = uname; this.age = age; // 这种定义方法 如果有多个实例,会在内存里开辟例外的空间; 很耗内存 this.sing = function() { console.log('我会唱歌'); } } Star.sex = '男'; var ldh = new Star('刘德华', 18); console.log(Star.sex);//静态成员只能通过构造函数来访问
构造函数 通过原型分配的函数 是所有对象所 共享的
js 规定,每一个构造函数都有个一个 prototyoe 属性 ,指向另一个对象;
prototype就是一个对象,这个对象的所有属性和方法,都被构造函数所拥有的
我们可以把那些不变的方法,直接定义到prototype 对象上面, 这样所有的实例就可以共享这些方法