js中的原型链prototype与__proto__的关系,可以用浅显易懂话概括一下吗,搞开发快一年了,还是不理解

我知道prototype是函数对象独有的,__proto__普通对象独有的,但原型主演用在哪里?为什么要用原型?我现在都有点蒙,虽然工作快一年,工作项目中着实没用过原型... 我知道prototype是函数对象独有的,__proto__普通对象独有的,但原型主演用在哪里?为什么要用原型?我现在都有点蒙,虽然工作快一年,工作项目中着实没用过原型 展开
 我来答
百度网友bed337e
2016-08-02 · TA获得超过657个赞
知道小有建树答主
回答量:644
采纳率:83%
帮助的人:434万
展开全部

// 构造函数
function Foo(y) {
 // 构造函数将会以特定模式创建对象:被创建的对象都会有"y"属性
 this.y = y;
}

// "Foo.prototype"存放了新建对象的原型引用
// 所以我们可以将之用于定义继承和共享属性或方法
// 所以,和上例一样,我们有了如下代码:

// 继承属性"x"
Foo.prototype.x = 10;

// 继承方法"calculate"
Foo.prototype.calculate = function (z) {
 return this.x + this.y + z;
};

// 使用foo模式创建 "b" and "c"
var b = new Foo(20);
var c = new Foo(30);

// 调用继承的方法
b.calculate(30); // 60
c.calculate(40); // 80

// 让我们看看是否使用了预期的属性

console.log(

 b.__proto__ === Foo.prototype, // true
 c.__proto__ === Foo.prototype, // true

 // "Foo.prototype"自动创建了一个特殊的属性"constructor"
 // 指向a的构造函数本身
 // 实例"b"和"c"可以通过授权找到它并用以检测自己的构造函数

 b.constructor === Foo, // true
 c.constructor === Foo, // true
 Foo.prototype.constructor === Foo // true

 b.calculate === b.__proto__.calculate, // true
 b.__proto__.calculate === Foo.prototype.calculate // true

);

看看这张图片就明白了

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式