研究到这儿,竟然出现了一个面试题目

var a = {
name : '小明'
}; var b = a; b.name = '小强'; alert( a.name );

结果必然是“小强”,原因是对象的引用,两个用的是一个地址,所以只要这个地址里的东西变了,那个两个对象弹出来的自然也要变。

故而这儿存在的是上篇同样的问题。

var a = {
name : '小明'
};
var b = {};
extend( b , a );
b.name = '小强';
alert( a.name );
function extend(obj1,obj2){
for(var attr in obj2){
obj1[attr] = obj2[attr];
}
}

因此上篇的解决方案就是将 extend的方法加上,并且将

createStar.prototype = createPerson.prototype;   改成 extend(createStar.prototype,createPerson.prototype);

还有一个面试题目:
var a = [,,];
var b = a;
b.push();
alert(a); // 1,2,3,4 var a = [1,2,3];
var b = a;
b = [1,2,3,4];
alert(a); // 1,2,3

上面这个弹出结果,考察的是对象引用时的问题,对象引用改变了。

下面的弹出结果是,当b重新赋值时,对象应用问题就已经解开了,因为重新赋值时,b就又开了个新的地址,所以a还是1,2,3

所以总结一下,就是如下:
属性的继承 方法的继承
调用父类的构造函数call for in  拷贝继承(jquery中就是如此)

JS面向对象组件(五) -- 复制对象(拷贝继承)的更多相关文章

  1. JS面向对象组件(一) ---包装对象与原型链

    首先我们可以看看平时我们常用的 var str = 'hello'; alert(typeof str); //string var str = new String("hello" ...

  2. js面向对象组件

    1.包装对象 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" ...

  3. JavaScript (JS) 面向对象编程 浅析 (含对象、函数原型链、闭包解析)

    1. 构造函数原型对象:prototype ① 构造函数独立创建对象,消耗性能 function Person(name) { this.name = name; this.sayHello = fu ...

  4. 关于js的闭包和复制对象

    一.有关js的闭包 1.概念:所谓的闭包,就是指的两个作用域,其中内层作用于可以访问外层作用域的函数的现象 2.简单应用 for(var i = 0;i< lis.lenth;i++){ (fu ...

  5. JS面向对象组件 -- 继承的其他方式(类式继承、原型继承)

    继承的其他形式: •类式继承:利用构造函数(类)继承的方式 •原型继承:借助原型来实现对象继承对象   类 : JS是没有类的概念的 , 把JS中的构造函数看做的类 要做属性和方法继承的时候,要分开继 ...

  6. JS面向对象组件(四) -- 面向对象的继承

    什么是继承 •在原有对象的基础上,略作修改,得到一个新的对象 •不影响原有对象的功能 //父类 createPerson function createPerson(name,sex){ this.n ...

  7. JS面向对象组件(六) -- 拖拽功能以及组件的延展

    HTML部分 <div id="div1"></div> <div id="div2"></div> CSS部分 ...

  8. lua面向对象实现(实例化对象、继承、多态、多继承、单例模式)

    lua面向对象实现: 一个类就像是一个创建对象的模具.有些面向对象语言提供了类的概念,在这些语言中每个对象都是某个特定类的实例.lua则没有类的概念,每个对象只能自定义行为和形态.不过,要在lua中模 ...

  9. Effective C++ .12 复制对象-拷贝构造函数的编写

    当我们自己编写拷贝构造函数时,编译器就不会为该类生成默认拷贝构造函数了,对于assignment operator也是如此. 1. 拷贝构造函数中记得调用父类的拷贝构造函数,或者相应复制过程 clas ...

随机推荐

  1. Axis2学习的第一天

    按照下面,分别建2个工程,一个client(客户端),一个server(服务端) 先实现服务端: 1.编写services.xml文件,该文件是放在aar文件里的\META-INF目录下的: < ...

  2. volatile 关键字的复习

    今天早上看何登成的微博(http://hedengcheng.com/?p=725) 对volatile 关键字语意进行了深入分析. 看完之后,用自己的话总结如下: 1.c/c++ volatile中 ...

  3. lintcode:背包问题II

    背包问题II 给出n个物品的体积A[i]和其价值V[i],将他们装入一个大小为m的背包,最多能装入的总价值有多大? 注意事项 A[i], V[i], n, m均为整数.你不能将物品进行切分.你所挑选的 ...

  4. iOS开发--动画(Animation)总结

    UIView的,翻转.旋转,偏移,翻页,缩放,取反的动画效果   翻转的动画 //开始动画 [UIView beginAnimations:@"doflip" context:ni ...

  5. IOS底层数据结构--class

    一.类的数据结构 Class(指针) typedef struct objc_class *Class; /* 这是由编译器为每个类产生的数据结构,这个结构定义了一个类.这个结构是通过编译器在执行时产 ...

  6. linux 打开文件数 too many open files 解决方法

    linux 打开文件数 too many open files 解决方法 too many open files 出现这句提示的原因是程序打开的文件/socket连接数量超过系统设定值. 查看每个用户 ...

  7. Linux下 执行程序

    看到有人问Linux下的./表示什么意思,我就趁机在这里写一下个人愚见: ./的意思是执行当前目录下的某可执行文件. . /相当于 source 根目录下的一个脚本.

  8. Echarts - js

    <script type="text/javascript"> var myChart; myChart = echarts.init(document.getElem ...

  9. 常用WinPE

    微PE工具箱:http://www.wepe.com.cn/ 绝对PE工具箱:http://dl.pconline.com.cn/download/64736.html 通用PE工具箱:http:// ...

  10. 神经网络:卷积神经网络CNN

    一.前言 这篇卷积神经网络是前面介绍的多层神经网络的进一步深入,它将深度学习的思想引入到了神经网络当中,通过卷积运算来由浅入深的提取图像的不同层次的特征,而利用神经网络的训练过程让整个网络自动调节卷积 ...