对于js原型和原型链继承的简单理解(第三种,复制继承)
复制继承:简单理解,就是把父对象上的所有属性复制到自身对象上;
function Cat(){
this.climb = function(){
alert("我会爬树");
}
}
function Dog(){
this.eat = function(){
alert("我会吃");
}
this.extend = function(parent){//extend方法实现了复制
for(var key in parent){
//console.log(key);
this[key] = parent[key];
}
}
}
var dog = new Dog();
console.log(dog);//这里没有climb方法
dog.extend(new Cat());//开始复制
console.log(dog);//这里有了climb方法
这是Google下的结果
aaarticlea/png;base64,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" alt="" />
对于js原型和原型链继承的简单理解(第三种,复制继承)的更多相关文章
- 对于js原型和原型链继承的简单理解(第一种,原型链继承)
原型是js中的难点加重点,也是前端面试官最爱问的问题之一,因为面试官可以通过被面试者对原型的理解.来判断被面试者对js的熟悉程度. 原型的定义 Js所有的函数都有一个prototype属性,这个属性引 ...
- 对于js原型和原型链继承的简单理解(第二种,对象冒充)
关键代码 this.parent = Cat; this.parent.apply(this); function Cat(){ this.climb = function(){ aler ...
- 深入理解OOP(三):多态和继承(动态绑定和运行时多态)
在前面的文章中,我们介绍了编译期多态.params关键字.实例化.base关键字等.本节我们来关注另外一种多态:运行时多态, 运行时多态也叫迟绑定. 深入理解OOP(一):多态和继承(初期绑定和编译时 ...
- js 继承的简单理解
什么是继承 js中的继承就是获取存在对象已有属性和方法的一种方式. 继承一 属性拷贝 就是将对象的成员复制一份给需要继承的对象. // 创建父对象 var superObj = { name:'liy ...
- JS继承(简单理解版)
童鞋们,我们今天聊聊js的继承,关于继承,平时开发基本用不到,但是面试没有不考的,我就想问,这是人干的事吗? 好吧,迫于社会主义核心价值观,我们今天就来简单说一说js的继承,谁让它是面向对象编程很重要 ...
- js架构设计模式——你对MVC、MVP、MVVM 三种组合模式分别有什么样的理解?
你对MVC.MVP.MVVM 三种组合模式分别有什么样的理解? MVC(Model-View-Controller)MVP(Model-View-Presenter)MVVM(Model-View-V ...
- CSS设计指南之CSS三种机制:继承、层叠和特指
一.继承 CSS中的祖先元素也会向后代传递一样东西:CSS属性的值.body元素是所有元素的祖先,所有标签都是它的后代,比如为body元素设置一种字体,那么文档中的所有元素,无论它在层次结构中多么靠下 ...
- JS判断一个数组中是否有重复值的三种方法
方法一: var s = ary.join(",")+","; for(var i=0;i<ary.length;i++) { if(s.replace( ...
- JS 深拷贝和浅拷贝概念,以及实现深拷贝的三种方式
一.理解堆栈,基本数据类型与引用数据类型 1.堆栈 栈(stack):系统自动分配的内存空间,内存会由系统自动释放,用来存放函数的参数值,局部变量的值等,特点是先进后出. 堆(heap):系统动态分配 ...
随机推荐
- 游戏算法中lua脚本详解
此外,函数本身也是一个变量,比如: dp@dp:~ % cat test.lua local mylen={} mylen.len3=function (x,y,z) return math.sqrt ...
- MVC3.0,路由设置实现伪静态IIS中404错误
C# code? 1 2 3 4 5 routes.MapRoute("NewQueryTest.asp", "NewQueryTest ...
- android 模拟微信消息框 BaseAdapter()方法 [2]
在昨天的微信布局的基础上加内容 http://www.cnblogs.com/Seven-cjy/p/6098024.html 项目下/res/layout下创建一个 listview_layout. ...
- no-cache、max-age=0、must-revalidate区别
之前深入搜索了多次,根据stackoverflow的回答进行一些总结(http://stackoverflow.com/questions/18148884/difference-between-no ...
- Java组合与继承生成的类中构造函数的执行顺序
[程序实例] import java.util.*; class Meal{ Meal() { System.out.println("Meal Constructor"); } ...
- [Qt] qtcreator 中打开console
(1) qtcreator-->左侧Projects-->Run-->中间的checkbox (Run in terminal)打上勾 (2) 在项目的.pro文件中加上 " ...
- css(二)
重新排传智的首页!头部和左边的部分完成了! <!doctype html> <html lang="en"> <head> <meta c ...
- Jetty监控线程使用情况的配置
Jetty监控线程使用情况配置 第一步,配置xml文件 jetty-monitor.xml 参数说明: threads: 线程池中的线程 busyThreads: 使用中的线程 idleThreads ...
- 预处理、const与sizeof相关面试题
1.用预处理指令#define 声明一个常数,用以表明一年中有多少秒(忽略闰年问题) #define语法知识: (1) 不能以分号结束,括号的使用防止宏定义展开后的二义性. (2) 预处理器将为你计算 ...
- H面试程序(10): 字符串包含问题
题目描述:判断第二个字符串中的元素是否都能在第一个字符串中找到: 注意:和字符串的字串的问题有所区别,如第一个字符串为 abcdefg,第二个字符串为 aaabc,第二个字串还是包含于第一个字符串 ...