个人总结: call 继承的是父类私有
prototype 继承的父类公有
create 可以将公有或私有继承到子类上去(克隆)
for in 克隆 不管公有还是私有的都克隆成私有的

1.原型继承:将父类的私有和公有都继承子类的原型上。子类的原型等于父类的实例。(私有公有全部继承)

function A() {
this.name='aaa'
}
A.prototype.x=50;
function B() {
this.age='bbb'
}
B.prototype.y=100;
B.prototype=new A;
var a=new A;
var b=new B;
console.log("xsx------="+b.x); //50
console.log("xsx------="+b.name);//aaa

2.call继承:将父类的私有继承子类的私有。(prototype为公有)

function A() {
this.name='aaa'
}
A.prototype.x=50;
function B() {
this.age='bbb'
A.call(this)
}
B.prototype.y=100;
var a=new A;
var b=new B;
console.log("xsx------="+b.x); //undefined
console.log("xsx------="+b.name); //aaa

3.冒充对象继承:将父类的私有和公有都继承子类私有的。

function A() {
this.name = 'aaa'
}
A.prototype.x = 50;
function B() {
this.age = 'bbb'
var teme = new A
for (var k in teme) {
this[k]=teme[k]
}
}
B.prototype.y = 100;
var a = new A;
var b = new B;
console.log("xsx------=" + b.x); //50
console.log("xsx------=" + b.name);//aaa

4.混合继承:将父类私有继承子类私有,再将父类的私有和公有继承子类公有。采用call继承和原型继承,私有被继承两次。

function A() {
this.name = 'aaa'
}

A.prototype.x = 50;

function B() {
this.age = 'bbb'
A.call(this) //call 是用来继承私有的
}

B.prototype.y = 100;
B.prototype = new A;
var a = new A;
var b = new B;

console.log("xsx------=" + b.name);//aaa

5.组合继承:私有继承私有,公有继承公有

function A() {
this.name = 'aaa'
}

A.prototype.x = 50;

function B() {
this.age = 'bbb'
A.call(this) //call 是用来继承私有的
}
B.prototype =Object.create(A.prototype); //继承私有
B.prototype.y = 100;

var a = new A;
var b = new B;

console.log("xsx------=" + b.name);//aaa

Javascript 继承和克隆的更多相关文章

  1. 2018/1.6 Javascript 继承和克隆

    这种写法不是对象克隆,就是把obj的内存地址赋给obj2 通过 for in 克隆 不管公有还是私有的都克隆成私有的. js提供了一个克隆方法 objct.create() var obj2=obje ...

  2. javascript继承的三种模式

    javascript继承一般有三种模式:组合继承,原型式继承和寄生式继承: 1组合继承:javascript最为广泛的继承方式通过原型链实现对原型属性和方法的继承,通过构造函数实现对实例属性的继承,同 ...

  3. javascript继承机制的设计思想(ryf)

    我一直很难理解Javascript语言的继承机制. 它没有"子类"和"父类"的概念,也没有"类"(class)和"实例" ...

  4. 【读书笔记】javascript 继承

    在JavaScript中继承不像C#那么直接,C#中子类继承父类之后马上获得了父类的属性和方法,但JavaScript需要分步进行. 让Brid 继承 Animal,并扩展自己fly的方法. func ...

  5. 图解JavaScript 继承

    JavaScript作为一个面向对象语言,可以实现继承是必不可少的,但是由于本身并没有类的概念(不知道这样说是否严谨,但在js中一切都类皆是对象模拟)所以在JavaScript中的继承也区别于其他的面 ...

  6. JavaScript强化教程——Cocos2d-JS中JavaScript继承

    javaScript语言本身没有提供类,没有其它语言的类继承机制,它的继承是通过对象的原型实现的,但这不能满足Cocos2d-JS引擎的要求.由于Cocos2d-JS引擎是从Cocos2d-x演变而来 ...

  7. [原创]JavaScript继承详解

    原文链接:http://www.cnblogs.com/sanshi/archive/2009/07/08/1519036.html 面向对象与基于对象 几乎每个开发人员都有面向对象语言(比如C++. ...

  8. javascript继承(六)—实现多继承

    在上一篇javascript继承—prototype最优两种继承(空函数和循环拷贝)(3) ,介绍了js较完美继承的两种实现方案,那么下面来探讨一下js里是否有多继承,如何实现多继承.在这里可以看看j ...

  9. javascript继承(五)—prototype最优两种继承(空函数和循环拷贝)

    一.利用空函数实现继承 参考了文章javascript继承—prototype属性介绍(2) 中叶小钗的评论,对这篇文章中的方案二利用一个空函数进行修改,可以解决创建子类对象时,父类实例化的过程中特权 ...

随机推荐

  1. easyui combobox 取值

    easyui combobox 取值 var zhudaoci = $.trim($('#spanZhudaociId').combobox('getValue')); 学习了:http://blog ...

  2. android数据储存之存储方式

    能够将数据储存在内置或可移动存储,数据库,网络.sharedpreference. android能够使用Content provider来使你的私有数据暴漏给其它应用程序. 一.sharedpref ...

  3. modSecurity规则学习(七)——防止SQL注入

    1.数字型SQL注入 /opt/waf/owasp-modsecurity-crs/rules/REQUEST-942-APPLICATION-ATTACK-SQLI.conf"] [lin ...

  4. 同一台服务器部署多个WEB应用,SESSION冲突的解决方法

    由于一台服务器上使用Tomcat部署多个WEB项目,而项目因为用到框架都是一样的,导致同时运行,session相互冲突,这个登录后,那个就得重新登录,造成了使用不方便,解决办法如下: 在server. ...

  5. POJ 3271 BFS (大坑)

    被某人拉进了坑 完完全全被坑一天的题-- 题意: 正解思路: 先把每一个点搜一遍 预处理出它能在一步之内到的所有点 并连边 然后用一个类似DP的东西把方案数加起来就搞定了 (其实 也不是很难) 但是 ...

  6. XML之序列化C#实体类,DataTable,List

    1. static void Main(string[] args) { #region 实体类 Request patientIn = new Request(); patientIn.System ...

  7. PHP date()获取某时间段以周、月、季度为粒度的时间段数组

    date()函数: PHP date()  参考:https://www.hi-docs.com/php/date.html Linux date()参考:http://www.cnblogs.com ...

  8. JS jQuery查看系统中安装的字体

    1.下载插件:FontDetect插件  地址:http://www.lalit.org/lab/javascript-css-font-detect/ 或者复制以下代码到fontdetect.js: ...

  9. Java并发包之CountDownLatch用法

    CountDownLatch计数器闭锁是一个能阻塞主线程,让其他线程满足特定条件下主线程再继续执行的线程同步工具. Latch闭锁的意思,是一种同步的工具类.类似于一扇门:在闭锁到达结束状态之前,这扇 ...

  10. ItelliJ IDEA开发工具使用—创建一个web项目(转)

    最近想用IDEA编辑器开发,但是平时都用MyEclipse和eclipse习惯了,突然间用IDEA到处碰壁的感觉.在不断的摸索之后终于苦尽甘来,学会了基本的web程序如何创建以及运行了.期间在网上找了 ...