`
三月沙
  • 浏览: 618008 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

javascript 理解对象原型(一)

阅读更多

 

            //------------------------------------------------------------------
            //1.javascript对象创建的时候,构造函数会创建该对象的原型,对象会继承原
            //型的所有方法和属性,即每个对象都连接到一个原型对象.
            //
            //2.所有通过字面量创建的对象都连接到Object.prototype这个标准的对象.
            //
            //3.当你创建某个对象时,你可以选择使用某个对象作为他的原型
            //
            //下面创建了一个可以是对象在创建时选择自己的原型
            //------------------------------------------------------------------
            var stooge={
                first_name:'Hanks',
                last_name:'tom'
            }
            if(typeof Object.beget!=='function')
            {
                Object.beget = function(o)
                {
                    var F = function(){
                        this.constructor = arguments.callee
                        
                    };
                    F.prototype = o;
                    return new F();
                }
            }
        
            //创建了另一个对象,使用stooges作为原型
            var another_stooge = Object.beget(stooge);
            
            //查看对象的值
            alert(another_stooge.first_name);//output:Hanks
                
            //现在更改原型
            stooge.first_name='Jack';
            //查看原型的值
            alert(stooge.first_name); //output:Jack
            //查看对象的值
            alert(another_stooge.first_name);//output:Jack
                 
            //现在更改对象
            another_stooge.first_name='Michel';
            //查看对象的值
            alert(another_stooge.first_name);//output:Michel
            //查看原型的值
            alert(stooge.first_name);//output:Jack
            //通过继承对象访问原型上的值
            alert(another_stooge.constructor.prototype.first_name);
               
            //对原型添加新的属性
            stooge.middle_name='MoJce';
            //查看对象的值
            alert(another_stooge.middle_name);//output:MoJce
             
            //----------------------------------------------------------------
            //结论:对继承对象的更改并不会反应到原型上去,即更新不
            //会影响原型连接上的值
            //如果某个新的属性被添加到原型中,就会立刻反应到所有使用该原型创造的
            //对象中
            //----------------------------------------------------------------

            //----------------------------------------------------------------
            //属性检测,typeof检测手段可以检测到从原型上继承过来的属性,
            //但hasOwnProperty却忽视了原型上的属性,只检测本对象拥有的
            //属性
            //----------------------------------------------------------------
            alert(typeof flight01.number); //output:number
            alert(typeof stooge.first_name);//output:string
            alert(typeof another_stooge.first_name);//output:string
            alert(flight01.hasOwnProperty('number'));//output:true
            alert(another_stooge.hasOwnProperty('first_name'));//output:false
0
0
分享到:
评论

相关推荐

    深入理解javascript原型和闭包

    深入理解javascript原型和闭包(01)——一切都是对象 深入理解javascript原型和闭包(02)——函数和对象的关系

    js 原型对象和原型链理解

    有一句话说的好:如果你不能把一个很复杂的东西用最简单的话语描述出来,那就说明你没有真正的理解对原型对象和原型链的描述让我受益匪浅。上面文件仅用一个对比性的例子来说明。谢谢大家支持。

    JavaScript核心(对象、原型、继承、上下文、闭包、this).pdf

    面向对象概念(对象封装,各种继承,闭包原理,this作用域等)介绍清晰易懂

    JavaScript 面向对象编程详细讲解文档

    原型是理解继承概念的关键, 我们将会教你如何建立原型, 如何检测一个对象是否是另外一个对象的原型, 及其 JavaScript 的模型与Java 面向对象编程之间的区别。我们同样会向你展示如何检测对象所包含的各种属性的方法...

    深入理解JavaScript系列

    深入理解JavaScript系列(5):强大的原型和原型链 深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP 深入理解JavaScript系列(7):S.O.L.I.D五大原则之开闭原则OCP 深入理解JavaScript系列(8):...

    JavaScript你一定要搞懂的原型链

    能学到什么:理解原型链对于 JavaScript 开发者来说非常重要,因为它影响了对象的属性访问、继承和代码复用等方面。通过掌握原型链的概念和工作原理,开发者可以更好地利用 JavaScript 的面向对象特性。 这是一个可...

    学习javascript面向对象 理解javascript原型和原型链

    那么,如果原型对象等于另一个原型的实例,此时的原型对象将包含一个指向另一个原型的指针,相应地,另一个原型中也包含着一个指向另一个构造函数的指针。如果另一个原型又是另一个原型的实例,那么上述关系依然成立...

    深入理解javascript原型和闭包1

    在咱们的第一节(深入理解javascript原型和闭包(1)——一切都是对象)中说道,函数也是一种对象。他也是属性的集合,你也可以对函数进行自定义属性。不用等咱

    深入理解JavaScript系列(.chm)

    深入理解JavaScript系列(5):强大的原型和原型链 深入理解JavaScript系列(6):S O L I D五大原则之单一职责SRP 深入理解JavaScript系列(7):S O L I D五大原则之开闭原则OCP 深入理解JavaScript系列(8):...

    深入理解javascript原型链和继承

    在上一篇文章中,介绍了原型的概念,了解到在javascript中构造函数、原型对象、实例三个好基友之间的关系:每一个构造函数都有一个“守护神”——原型对象,原型对象心里面也存着一个构造函数的“位置”,两情相悦,...

    javascript 原型与原型链的理解及应用实例分析

    本文实例讲述了javascript 原型与原型链的理解及应用。分享给大家供大家参考,具体如下: javascript中一切皆对象,但是由于没有Class类的概念,所以就无法很好的表达对象与对象之间的关系了。 比如对象A与对象B之间...

    深入理解javascript构造函数和原型对象

    对象,是javascript中非常重要的一个梗,是否能透彻的理解它直接关系到你对整个javascript体系的基础理解,说白了,javascript就是一群对象在搅。。(哔!)。

    Javascript面向对象程序设计培训讲义

    由于JS不是纯的面向对象的语言,所以对象的继承是以原型函数的形式继承的,很多人刚开始接触的时候不太理解,但是JS这种以原型函数的形式实现面向对象技术,不仅是可行的,而且还为面向对象技术提供了动态继承的功能...

    理解JavaScript原型链

    每一个JavaScript对象都和另一个对象相关联,相关联的这个对象就是我们所说的“原型”。每一个对象都会从原型继承属性和方法。有一个特殊的对象没有原型,就是Object。在之后的图示中会进行说明。 举个栗子,我们...

    javascript 原型与原型链的理解及实例分析

    本文实例讲述了javascript 原型与原型链的理解。分享给大家供大家参考,具体如下: javascript中一切皆对象,但是由于没有Class类的概念,所以就无法很好的表达对象与对象之间的关系了。 比如对象A与对象B之间,它们...

    全面理解面向对象的 JavaScript(来自ibm)

    当今 JavaScript 大行其道,各种应用...要掌握好 JavaScript,首先一点是必须摒弃一些其他高级语言如 Java、C# 等类式面向对象思维的干扰,全面地从函数式语言的角度理解 JavaScript 原型式面向对象的特点。把握好这一

    深入理解JavaScript编程中的原型概念

    JavaScript 的原型对象总是让人纠结。即使是经验丰富的JavaScript专家甚至其作者,经常对这一概念给出很有限的解释。我相信问题来自于我们对原型最早的认识。...(只有一个例外,默认的对象原型在每条原型链的顶端,其

    javascript构造函数以及原型对象的理解

    以下是一个构造函数的例子 如果是实例方法,不同的实例化,它们引用的地址是不一样的,是唯一的。 //定义一个构造函数 function People(name,age){ this.name=name; this.age=age; this.dothings=function(){ ...

Global site tag (gtag.js) - Google Analytics