JS继承之prototype

function SuperFun(){
  this.proper = ‘1‘;
}
SuperFun.localProper = ‘a‘;
SuperFun.prototype.name = ‘supperName‘;
SuperFun.prototype.getName = function(){console.info(this.name);};
var superInstance = new SuperFun();
function SubFun(){
  this.subProper = ‘2‘;
}
SubFun.prototype.subName = ‘subName‘;
SubFun.prototype = new SuperFun();
var subInstance = new SubFun();

console.info(superInstance.localProper); //undefined,这是来捣乱的,localProper是S构造函数的静态属性,实例是访问不了的
console.info(subInstance.subName);       //undefined,因为在SubFun继承SuperFun的时候,SubFun.prototype先被赋值为{},之前原型的属性都没了
console.info(subInstance.subProper);     //可以被访问的到
console.info(subInstance.name);          //可以被访问的到
console.info(subInstance.proper);        //可以被访问的到
console.info(subInstance.__proto__);
console.info(subInstance.__proto__.__proto__);
console.info(subInstance.__proto__.__proto__.__proto__);   //找到了Object的prototype,到最顶层了console.info(subInstance.constructor); 

输出结果如下:

console.info(subInstance.__proto__); 输出为:在SubFun没有继承之前,SubFun的原型是SubFun.prototype,继承时,进行如下三步操作:SubFun.prototype = {}SubFun.Prototy.__proto__ = SuperFun.prototypeSuperFun.call(SubFun.prototype),这步执行后,将SuperFun构造函数的super属性添加到了SubFun.prototype中去。
时间: 2024-11-05 06:26:09

JS继承之prototype的相关文章

js继承之call,apply和prototype随谈

在js中,call,apply和prototype都可以实现对象的继承,下面我们看一个例子: function FatherObj1() { this.sayhello = "I am join"; this.show = function () { alert("I am FatherObj1"); }; this.getall = function () { if (arguments) alert("GetAll:" + arguments

js继承的常用方式

写在前面的话:这篇博客不适合对面向对象一无所知的人,如果你连_proto_.prototype...都不是很了解的话,建议还是先去了解一下JavaScript面向对象的基础知识,毕竟胖子不是一口吃成的. 我们都知道面向对象语言的三大特征:继承.封装.多态,但JavaScript不是真正的面向对象,它只是基于面向对象,所以会有自己独特的地方.这里就说说JavaScript的继承是如何实现的. 学习过Java和c++的都知道,它们的继承通过类实现,但JavaScript没有类这个概念,那它通过什么机

JS中的prototype(转载)

在研究别人写的js图像处理算法时,发现其中脚本中大量使用prototype,很难读明白,就网上查了下资料发现这篇文章很易懂,就转载如下: 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展.我们称B的原型为A. 2 javascript的方法可以分为三类: a 类方法 b 对象方法 c 原型方法 例子: function People(name){this.name=name;//对象方

[技术学习]js继承

今天又看了一遍js的面向对象方面的知识,重点看了继承相关内容,已经记不得看了第几次这个内容,终于觉得自己好像懂了,特记录下来过程. js面向对象继承分为两大类,主要分为对象继承和非对象继承(拷贝继承),这次主要谈对象继承.对象继承主要有两种:原型继承和对象冒充继承. 一.原型继承,将子类的原型引用父类的实例,从而达到将子类的原型与父类的原型和父类的构造函数关联起来的目的. function Person(name){ this.name=name; } Person.prototype.sayN

js继承相关

这几天看到一篇文章详解Javascript的继承实现,发现js还是很深奥的,比如call.apply.prototype这些,问起来我也能说的头头是道的,但是看到一些复杂的代码有的时候还是会迷糊,所以查了好多资料,希望下次我也能用在代码中,写出优秀的代码,大神,我来了,哈哈哈哈哈...... 1.call apply func.call(newObj,arg1,arg2); func.apply(newObj,[arg1,arg2]); ecma中为了实现继承机制中的对象冒充,加入了call()

JS继承的实现方式

前言 JS作为面向对象的弱类型语言,继承也是其非常强大的特性之一.那么如何在JS中实现继承呢?让我们拭目以待. JS继承的实现方式 既然要实现继承,那么首先我们得有一个父类,代码如下: // 定义一个动物类 function Animal (name) { // 属性 this.name = name || 'Animal'; // 实例方法 this.sleep = function(){ console.log(this.name + '正在睡觉!'); } } // 原型方法 Animal

js继承的概念

js里常用的如下两种继承方式: 原型链继承(对象间的继承) 类式继承(构造函数间的继承) 由于js不像java那样是真正面向对象的语言,js是基于对象的,它没有类的概念.所以,要想实现继承,可以用js的原型prototype机制或者用apply和call方法去实现 在面向对象的语言中,我们使用类来创建一个自定义对象.然而js中所有事物都是对象,那么用什么办法来创建自定义对象呢?这就需要用到js的原型: 我们可以简单的把prototype看做是一个模版,新创建的自定义对象都是这个模版(protot

JS中的prototype

JS中的prototype     原文地址: http://www.cnblogs.com/yjf512/archive/2011/06/03/2071914.html JS中的prototype是JS中比较难理解的一个部分 本文基于下面几个知识点: 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展.我们称B的原型为A. 2 javascript的方法可以分为三类: a 类方法  /

js继承的实现

js继承有5种实现方式: 1.继承第一种方式:对象冒充   function Parent(username){     this.username = username;     this.hello = function(){       alert(this.username);     }   }   function Child(username,password){     //通过以下3行实现将Parent的属性和方法追加到Child中,从而实现继承     //第一步:this.