javascript实现继承的六种方式
/*实现继承的六种方式*/
/*1.扩展原型对象的方法实现继承*/
function Foo1(){}
//在Foo1函数上扩展一个fn1方法,由构造函数创建的对象都具有fn1这个方法
Foo1.prototype.fn1=function(){};
/*2.替换原型对象实现继承*/
function Foo2(){}
//给Foo2函数的原型对象重新赋值,注意不要忘记添加constructor属性
Foo2.prototype={
constructor:Foo2,
fn1:function(){},
fn2:function(){}
};
/*3.混入继承*/
//已知两个对象,obj2对象继承obj中的属性
obj={name:"张三",age:16};
obj2={};
for(var key in obj){
obj2[key]=obj[key];
}
//封装一个函数
function mixin(target,source){
for(var key in source){
target[key]=source[key];
}
return target;
}
//jQuery中的extend方法就使用了混入继承
/*4.混入+原型继承*/
//给Foo4.prototype混入一些新的方法
function Foo4(){}
mixin(Foo4,{fn1:function(){},fn2:function(){}});
//jQuery中的jQuery.fn.extend()就是使用了这个方法
/*5.经典继承*/
var obj5={name:"liying",age:18};
function Foo5(){};
Foo5.prototype=obj5;
//封装一个方法
function getFun(obj5){//传入已知的对象
function F(){}
F.prototype=obj5;
return new F();//将继承创建的对象返回
}
//经典继承在ES5中得到了实现,Object.create()
/*6.借用构造函数实现继承*/
function Foo6(name,age){
this.name=name;
this.age=age;
}
function NewFoo(name,age,number){
Foo6.call(this,name,age);
this.number=number;
}
//newFoo构造函数借用Foo6构造函数中的属性和方法
var obj = new NewFoo("张三",18,10);
console.log(obj);//NewFoo {name: "张三", age: 18, number: 10}
javascript实现继承的六种方式的更多相关文章
- JavaScript是如何实现继承的(六种方式)
大多OO语言都支持两种继承方式: 接口继承和实现继承 ,而ECMAScript中无法实现接口继承,ECMAScript只支持实现继承,而且其实现继承主要是依靠原型链来实现,下文给大家技术js实现继承的 ...
- javascript实现继承3种方式: 原型继承、借用构造函数继承、组合继承,模拟extends方法继承
javascript中实现继承的三种方式:原型继承.借用构造函数继承.混合继承: /* js当中的继承 js中 构造函数 原型对象 实力对象的关系: 1 构造函数.prototype = 原型对象 2 ...
- javascript 中继承实现方式归纳
转载自:http://sentsin.com/web/1109.html 不同于基于类的编程语言,如 C++ 和 Java,javascript 中的继承方式是基于原型的.同时由于 javascrip ...
- 实现JavaScript中继承的三种方式
在JavaScript中,继承可以通过三种手法实现原型链继承 使用apply.call方法 对象实例间的继承. 一.原型链继承 在原型链继承方面,JavaScript与java.c#等语言类似 ...
- DOM笔记(十三):JavaScript的继承方式
在Java.C++.C#等OO语言中,都支持两种继承方式:接口继承和实现继承.接口继承制继承方法签名,实现继承则继承实际的方法和属性.在SCMAScript中,由于函数没有签名,所以无法实现接口继承, ...
- JavaScript实现继承的方式和各自的优缺点
ECMAscript只支持实现继承,主要是依靠原型链来实现的. JavaScript实现继承的方式: 类式继承 构造函数继承 组合继承 寄生组合式继承 1.类式继承 //类式继承 //声明父类 fun ...
- Javascript之继承(原型链方式)
1.原型链 原型链是JavaScript中继承的主要方法. 每个构造函数都拥有一个原型对象,原型对象都包含一个指向构造函数的指针(constructor),实例都包含一个指向原型对象的内部指针(__p ...
- Javascript模拟继承(赠送.net吐槽一段)
首先吐槽一句,今年的就业形势很不乐观啊,特别是搞.net的(相对java),特特别是还没出校门没有正式工作经验的,找个实习很难,前些天接了个面试电话,上来就质疑我“你一个在校大学生怎么可能做了那么多项 ...
- 详解Javascript的继承实现(二)
上文<详解Javascript的继承实现>介绍了一个通用的继承库,基于该库,可以快速构建带继承关系和静态成员的javascript类,好使用也好理解,额外的好处是,如果所有类都用这种库来构 ...
随机推荐
- 3403. 题解【NOIP2013模拟】数列变换 (Standard IO)
先看题目: Description 小X 看到堆成山的数列作业十分头疼,希望聪明的你来帮帮他.考虑数列A=[A1,A2,...,An],定义变换f(A,k)=[A2,A3,,,,.Ak,A1,Ak+2 ...
- docker安装中遇到的问题
错误一 提示:Segmentation Fault or Critical Error encountered. Dumping core and aborting. Aborted 解答:安装错误安 ...
- 注册服务到服务中心(Consul)
注册服务到服务中心(Consul) 添加POM文件中的依赖 在POM文件添加如下依赖: <dependency> <groupId>org.springframework.bo ...
- make源文件时出现 /usr/bin/ld: cannot find -lstdc++ 错误
解决CentOS 7 中,make源文件时出现 /usr/bin/ld: cannot find -lstdc++ 错误 在CentOS 7中,使用static方法编译,需要安装static vers ...
- 53-python基础-python3-列表-列表解析
列表解析 将for循环和创建新元素的代码合并成一行,并自动附加新元素. 实例:使用列表解析创建平方数列表. 首先指定一个描述性的列表名,如squares : 然后,指定一个左方括号,并定义一个表达式, ...
- 【记录】vue相关知识点
let let是es6新引入的命令,与var命令类似,但是let是声明的局部变量,只在所在代码块中有效. ES5 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景. var s = ...
- MYSQL全文索引—CONTAINS语法
我们通常在 WHERE 子句中使用 CONTAINS ,就象这样:SELECT * FROM table_name WHERE CONTAINS(fullText_column,'search con ...
- 三、IDS4建立authorization server
建立authorization server 一.环境搭建 1.创建项目 2.引用NuGet的identityserver4 3.配置asp.net core 管道 打开Startup.cs, 编辑C ...
- test命令-linux shell 脚本
#!/bin/bash # This is program will check you file name,which sys has or not,end print types. #2019/0 ...
- 关于ovf导入到Esxi上出显的“文件条目(行1)无效,sha256……”处理办法
通常删除同名文件*.mf文件即可导入!