码迷,mamicode.com
首页 > 编程语言 > 详细

javascript原型prototype

时间:2015-08-11 17:52:39      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:

原型和原型链的故事

相关文章: 为什么原型继承很重要

先来看看一段小代码用以引入要讲的小故事。


    function Foo() {};
    var f1 = new Foo();
    Foo.prototype.label = "乐正闯皇";

    alert(f1.label);    //output: 乐正闯皇
    alert(Foo.label);   //output: undefined

Why? 为什么?

下面来聊聊JavaScript中的原型和原型链种种。

函数对象的prototype并不作用于原型链查找过程中,该原型仅用于由该函数创建的对象/实例继承的属性,而函数本身并不使用相关联的原型。

但,一旦函数他自己本身就是个object的时候,它就继承了它创建者的功能的原型。

值得注意的是:我们使用Foo.prototype设置函数Foo创建的所有对象的属性。我们不说f1.prototype设置属性为f1。这是一个非常重要的,一点要记住!

再来个例子,更清晰的解释这句话:


    function foo() {}
    f1 = new foo();
    f2 = new foo();
    foo.prototype.x = "hello";

    f1.x  => "hello"
    f2.x  => "hello";

    f1.x = "goodbye";   //setting f1.x hides foo.prototype.x

    f1.x  => "goodbye"  //hides "hello" for f1 only
    f2.x  => "hello"

    delete f1.x
    f1.x  => "hello";   //foo.prototype.x is visible again to f1.

国外大佬对它两的故事有更深的理解->传送门

《javascript的闭包》

javascript原型prototype

标签:

原文地址:http://www.cnblogs.com/skylor/p/4721295.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!