js对象继承的问题
js继承方法有多种;
1.利用call()和apply()的方法。
call()里面接受多个参数;apply()只能接受两个参数。
call()第一个参数是本身,后面都是他的属性和方法。
apply()第一个参数是本身,第二个只能是数组。
代码如下:
<script type="text/javascript">
function Person(name,sex){
this.name=name;
this.sex=sex;
this.info=function(){
console.log(this.name);
}
}
function Teacher(name,sex,course){
Person.call(this,name,sex)//Person.apply(this,[name,sex])
this.course=course;
this.infoCourse=function(){
console.log(this.course)
}
}
var t=new Teacher("张三","男","英语");
console.log(t.name)
</script>
2.利用prototype独立出来给其添加子级。
此方法可以添加多个属性和方法。
主要是子级继承父级独立出来的东西。
其父级没独立出来的不能传入。
代码如下:
<script type="text/javascript">
function A(name){
this.name=name;
}
//给A添加一个方法
A.prototype.say=function(){
console.log(22)
}
A.prototype.index=11;
function B(name,age){this.age=age;
}
//子级继承父级的独立出来的东西
B.prototype=new A();
var b=new B(20,11)
b.say();
console.log(b.name)
console.log(b.index)
</script>
3.利用复制的方法。
思想是把父级里面的属性和方法便利一遍给给子级。
方法如下:
<script>
function A(name){
this.name=name;
this.say=function(){
console.log("hello");
};
};
function B(name){
var a=new A(name);
//便利数组里的所有的元素
for(var i in a){
//获取里面的所有的属性和方法。
B.prototype[i]=a[i];
};
};
var b=new B("name");
console.log(b.name);
</script>
js对象继承的问题的更多相关文章
- JS对象继承篇
JS对象继承篇 ECMAScript只支持实现继承,而且其实现继承主要是依靠原型链来实现的 原型链 其基本思路是利用原型让一个引用类型继承另一个引用类型的属性和方法 function Person() ...
- JS对象继承与原型链
1.以复制方式实现的继承 1.1浅拷贝 基本类型的复制 var parent = { lanage: "chinese" } var child = { name: "x ...
- Js对象继承小结
1.继承 对象的定义好用一些的一般是把实例对象的属性定义在类里面,通过this指针指向具体实例属性.定义对象的public方法时将其绑定到prototype中.子类在继承父类时可以通过对象冒充来继承父 ...
- js对象继承
方法: 1.原型链继承 2.使用对象冒充继承
- JS中对象继承方式
JS对象继承方式 摘自<JavaScript的对象继承方式,有几种写法>,作者:peakedness 链接:https://my.oschina.net/u/3970421/blog/28 ...
- Javascript高级编程学习笔记(22)—— 对象继承
继承是所有面向对象的语言最让人津津乐道的概念 许多面向对象的语言都支持两种实现继承的方式: 1.接口继承 2.实现继承 由于ECMAScript中没有函数签名,所以自然也是不支持接口继承 所以JS中能 ...
- js的继承实现方式
1. 使用call或者apply来实现js对象继承 function Animal(age){ this.age = age; this.say = function(){ console.log(' ...
- js 对象深复制,创建对象和继承
js 对象深复制,创建对象和继承.主要参考高级编程第三版,总结网上部分资料和自己的代码测试心得.每走一小步,就做一个小结. 1.对象/数组深复制 一般的=号传递的都是对象/数组的引用,如在控制台输入 ...
- js对象的几种创建方式和js实现继承的方式[转]
一.js对象的创建方式 1. 使用Object构造函数来创建一个对象,下面代码创建了一个person对象,并用两种方式打印出了Name的属性值. var person = new Object(); ...
随机推荐
- QT第四天学习
回顾: 1.信号与槽 public slots: //先声明后实现 signals: //只需要声明 connect(sender,SIGNAL(signal()),receiver,SLOT(slo ...
- iOS 属性之assign、copy、retain
参考自:http://blog.csdn.net/getchance/article/details/42213219 参考自:http://zhidao.baidu.com/link?url=Xmn ...
- java Runtime类
public class Test { public static void main(String[] args) throws UnsupportedEncodingException { Run ...
- 无法删除MySql数据库,报错1010 error dropping
环境:MySQL.Navicat 8 操作:Drop database testDB 报错:1010 error dropping database 解决方法: ps -ef | g ...
- PariticalFilter在MFC上的运行,源代码公开
由于项目需要,进行过一段时间的 PariticalFilter 研究.主要的工作就是将网络上的Console代码和Mfc融合在一起,并且添加了Mfc端的控制功能. 程序还有不完善的地方,现 ...
- 一个基于node 的小demo
首先我们新建一个文件夹 demo-test-node-1 目录目录如下 -- blog_recents.js --template.html --titles.jspn 首先我们新建一个 templ ...
- 在Window下安装Oracle
一.Oracle下载地址 http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 二.解压 ...
- vb是如何连接数据库的
vb是如何连接数据库的 刚开始学习数据库时 ,对数据库很不了解,尤其是模块中的代码.照着抄都有很多错的,每一句到底是什么意思呢,根本不懂.于是我就花费了大量的时间去查每一句代码的具体作 ...
- java线程之多个生产者消费者2.0
上一节中,通过while和notifyAll解决了多个生产者,消费者对共享资源的访问问题,现在开始升级 但是,仍然有改进之处,主要体现在两点: 1)使用新版本1.5开始后的锁Lock解决,目的将其全部 ...
- 用keychain这个特点来保存设备唯一标识。
由于IOS系统存储的数据都是在sandBox里面,一旦删除App,sandBox也不复存在.好在有一个例外,那就是keychain(钥匙串). 通常情况下,IOS系统用NSUserDefaults存储 ...