您的位置:首页 > Web前端 > JavaScript

JavaScript原型(prototype)小记

2016-12-14 21:54 190 查看

一、对象的原型

1、通过构造函数,创建对象:

JavaScript对象的属性,是由自身属性加上原型链中的属性,对象的原型链是由创建它的构造函数决定的,也就是创建对象时,调用的new function,例如:

// 定义一个构造函数
// JavaScript中构造函数和普通函数没区别,只是调用的时候使在前面加关键字new则为调用构造函数,不加则为普通调用
// 构造函数约定使用大写字母开头(便于与普通函数的区分)
function Foo() {}

// 通过构造函数新建一个对象
var foo = new Foo();

这时新建的foo对象将拥有Foo.prototype属性和自身的属性,假设属性重合,则采用就近原则,使用对象的属性

 

2、通过语法糖创建对象:

假设我们使用的是语法糖来创建对象的,底层其实也是调用构造函数来创建的

// 通过语法糖来创建对象
var foo = { x: 1, y: 2 };

// 等价于
var foo = new Object();
foo.x = 1;
foo.y = 2;

也就是说使用语法糖来创建的对象,也默认继承了Object.prototype属性

 

3、对象默认继承的Object.prototype

另外所有的对象的原型都继承自Object.prototype,也就是在上面通过调用构造函数Foo()创建的对象除了继承了Foo.prototype,还继承了Object.prototype,如下所示:

Object.prototype.a = "Object.prototype.a";

function Foo() {}
Foo.prototype.b = "Foo.prototype.b";

var foo = new Foo();
foo.c = "foo.c";

console.log("foo.a : " + foo.a);
console.log("foo.b : " + foo.b);
console.log("foo.c : " + foo.c);

/*
foo.a : Object.prototype.a
foo.b : Foo.prototype.b
foo.c : foo.c
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: