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

javascript原型继承的理解

阅读更多

java的继承:

 

class Parent {

}
class Child extends Parent {

}

 js的继承:

 

function Parent() {}
function Child() {}
Child.prototype=Parent;//Child的原型是Parent,即Child继承于Parent

 如果按java的编程思想,是不是感觉应该这样写?实际上是错误的。应该是:Child.prototype=new Parent();   WHY?

 

 

var parent = new Parent();
Child.prototype = parent;

var c1 = new Child();
c1.__proto__  === parent;//true

 

 

new Child()干了什么,为啥会有一个__proto__属性?

创建一个对象,增加一个属性__proto__,c1.__proto__ = Child.prototype。这里要说明一下__proto__这个属性在不同的浏览器中不一定相同。这样通过Child这个函数实例化的每个对象都有一个相同的__proto__属性即parent,形成一个链条,原型链继承也就实现了。

 

js的继承机制完全和java的不一样,千万不要用java的继承来理解js的继承。可以用key-value来理解,js里的对象都是key-value,__proto__是自动加入的一个key而已,其value即为构造函数的prototype

 


 
 

关于instanceof的理解

 

function Func() {}
var f = new Func();
f instanceof Func;//true

    f instanceof Func可以写成:

 

var L = f, R = Func;
while(true) {
    if(L === null) {
        return false;
    }
    if(L.__proto__  ===  R.prototype) {
        return true;
    }
    L = L.__proto__;
}

这样就好理解了吧,其实就是遍历对象的原型链,看有没有原型对象等于该函数的原型对象。不是看constructor哦

  • 大小: 97.8 KB
分享到:
评论

相关推荐

    理解Javascript原型继承原理

    ### 理解Javascript原型继承原理 #### 一、引言 在JavaScript中,原型继承是一种非常核心且独特的机制,它使得对象能够继承其他对象的属性和方法。本文旨在深入探讨这一机制,并通过具体的示例代码帮助读者更好地...

    再谈javascript原型继承

    Javascript原型继承是一个被说烂掉了的话题,但是自己对于这个问题一直没有彻底理解,今天花了点时间又看了一遍《Javascript模式》中关于原型实现继承的几种方法,下面来一一说明下,在最后我根据自己的理解提出了一...

    浅析Javascript原型继承 推荐第1/2页

    在深入探讨JavaScript的原型继承之前,首先要明确的是JavaScript中并没有类似其他编程语言中的类继承的概念。虽然有传言JavaScript 2.0将加入类继承...掌握原型继承对于深入理解JavaScript对象模型和设计模式至关重要。

    深入探索JavaScript的原型继承:机制、实现与最佳实践

    本文将深入探讨JavaScript原型继承的工作原理、实现方式以及在现代Web开发中的应用。 JavaScript的原型继承是一种强大且灵活的机制,它允许对象之间共享功能和行为。通过深入理解原型继承的工作原理和实现方式,...

    浅析javascript原型继承机制

    ### 浅析JavaScript原型继承机制 #### 一、引言 JavaScript作为一种动态语言,其对象模型与传统的面向对象编程语言有所不同。在JavaScript中,并没有直接提供类的概念,而是通过原型来实现继承。本文将深入探讨...

    javascript原型继承工作原理和实例详解_.docx

    ### JavaScript原型继承工作原理及实例详解 #### 一、引言 JavaScript作为一种广泛使用的脚本语言,在Web开发中扮演着重要角色。其独特的面向对象机制是通过原型继承来实现的,这种机制使得JavaScript能够灵活地...

    Javascript原型继承

    理解JavaScript原型继承是深入学习JavaScript的关键,它在实际开发中有着广泛的应用,尤其是在构建复杂的数据结构和实现模块化代码时。熟练掌握这一概念,将有助于提升JavaScript编程的灵活性和效率。

    深入理解javascript原型和闭包.pdf

    JavaScript原型和闭包是这门语言中两个比较难以理解且与其他面向对象语言区别较大的概念。理解这两个概念,不仅能让我们更深层次地理解JavaScript,而且有助于我们了解编程语言的设计思路,拓宽我们的视野。 首先,...

    浅谈javascript的原型继承

    javascript的继承在很多框架中都有运用,尤其是原型式继承。首先要理解一个概念,什么是原型式继承?所谓的原型式继承,就是在函数内部先创建一个临时性的构造函数,然后将传入的对象做这个构造函数的原型,最后返回...

    JavaScript原型链

    JavaScript原型链是JavaScript语言中的一个核心特性,它关乎对象之间的继承关系。在JavaScript中,一切皆为对象,而原型链则是实现对象间属性和方法共享的一种机制。理解原型链对于深入学习JavaScript至关重要。 ...

    Javascript原型对象、this的5钟用法、原型继承、Caller和Callee的使用.docx

    总结来说,理解JavaScript中的原型对象、this用法、原型继承和Caller/Callee对于编写高效、可维护的代码至关重要。这些概念构成了JavaScript面向对象编程的基础,帮助开发者实现对象间的关联和复用,以及创建复杂的...

    浅析JavaScript实现基于原型对象的“继承”.pdf

    本文将对JavaScript原型继承的方式进行介绍,并结合实例进行分析。 基于类的继承 面向对象编程语言是基于类的语言,以Java为例,Java是基于类的语言。在基于类的语言中,对象是类的实例,并且一个类可以从另一个类...

    JavaScript 原型继承之构造函数继承

    理解JavaScript的原型继承和构造函数继承对于编写高效的面向对象代码至关重要。它们是JavaScript中实现继承的核心机制,同时也是许多设计模式和库的基础。掌握这些概念有助于开发者更好地理解和使用JavaScript的面向...

    js的原型继承

    由于JavaScript没有类的概念,所以通常会结合构造函数和原型继承,形成所谓的“组合继承”。这种方式既保留了构造函数初始化实例的灵活性,又利用了原型链实现方法的共享。 ```javascript function SuperClass(name...

    javascript 原型模式实现OOP的再研究

    JavaScript中的原型模式是一种实现面向对象编程(OOP)的关键机制,它基于原型继承,使得对象可以从其他对象那里获得属性和方法。在这个模式下,每个函数都有一个`prototype`属性,这个属性是一个对象,用于共享属性...

    JavaScript中的原型继承基础学习教程_.docx

    在JavaScript中,原型继承是一种核心机制,用于实现面向对象编程中的继承特性。与其他许多编程语言不同,JavaScript不使用类来实现继承,而是基于原型...理解并熟练运用原型继承对于深入掌握JavaScript至关重要。

    深入理解javascript原型链和继承

    在深入理解JavaScript原型链和继承的概念之前,首先要了解JavaScript是一种基于对象的语言,而非传统的面向对象语言。它没有类的概念,函数可以被视为构造器,而对象则是通过构造函数、原型对象和实例之间的特殊关系...

Global site tag (gtag.js) - Google Analytics