JS 的继承
1:原生链:prototype
儿子能够继承父亲的属性,也可以觉得遗传基因不好自己改属性,(但是不能改变老爸的属性)。
看例子:
function farther(){
this.name = "jack",
this.sex = "man",
this.age = 18;
this.cbo = function(){
console.log(this.name);
}
}
// 继承
farther.prototype = {
son:function(){
this.name = "jack-two";
// 使用自己的name和父类的sex
console.log(this.name +"\t"+ this.sex);
// 更改父类的方法。
this.cbo = function(){
console.log("cbo change.");
};
this.cbo();
}
}
new farther().cbo(); // 输出 jack
new farther().son(); // 输出jack 和 jack-two 加 man 加 cbo change.
new farther().cbo(); // 输出的值依然是 jack;子类不能更改父类属性
2:call(list) 和 apply(arry) :
用法1: 对象1.方法.call(对象2),
对象1的方法使用对象2的属性,
用法2: 对象1.call(对象2); 对象2.对象1的方法,
在对象2中使用对象1的方法。
用法不一样,效果是一样的,一个缺少方法,一个缺少属性。
为什么要把 call 和 apply 放一起呢?因为他们除了参数,其效果是一样的。
function NameShowing(sex, age) {
this.showName = function() {
console.log(this.name + "\t" + sex + "\t" + age);
}
}
function Person(name) {
this.yourCC = function(){
console.log(name)
}
this.name = name;
};
// 实例化对象
var nameShowing = new NameShowing();
var jeremy = new Person("Jeremy")
//替换this指向 jeremy
NameShowing.apply(jeremy, ["girl",18]);
jeremy.showName();
// 当然可以利用 call(this) 来联合2个对象
function cExent(name,sex,age) {
NameShowing.call(this,sex,age);
Person.call(this,name);
}
// 这会执行fobj
var c2 = new cExent("jack","man",18);
// 调用NameShowing的myName方法
c2.showName();
c2.yourCC("my name is jack"); // 输出 jack,因为实例化的时候用的是jack
JS 的继承的更多相关文章
- JS对象继承篇
JS对象继承篇 ECMAScript只支持实现继承,而且其实现继承主要是依靠原型链来实现的 原型链 其基本思路是利用原型让一个引用类型继承另一个引用类型的属性和方法 function Person() ...
- js实现继承的5种方式 (笔记)
js实现继承的5种方式 以下 均为 ES5 的写法: js是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承 ...
- js实现继承的方式总结
js实现继承的5种方式 以下 均为 ES5 的写法: js是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承 ...
- 【09-23】js原型继承学习笔记
js原型继承学习笔记 function funcA(){ this.a="prototype a"; } var b=new funcA(); b.a="object a ...
- js实现继承的两种方式
这是面试时面试官会经常问到问题: js的继承方式大致可分为两种:对象冒充和原型方式: 一.先说对象冒充,又可分为3种:临时属性方式.call().apply(): 1.临时属性方式: 当构造对象son ...
- js实现继承
js是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承有以下通用的几种方式1.使用对象冒充实现继承(该种实现 ...
- 浅谈JS的继承
JS继承 继承是OO语言中最为人津津乐道的概念,许多OO语言都支持两种方式的继承:接口继承:实现继承. 接口继承:只继承方法签名. 实现继承:继承实际的方法. 由于ES里函数没有签名,所以在ES里面无 ...
- JS类继承常用方式发展史
JS类继承常用方式发展史 涉及知识点 构造函数方式继承 1-继承单个对象 1.1 多步走初始版 1.2 多步走优化版 1.3 Object.create()方式 2-继承多个对象 2.1 遍历 Obj ...
- js实现继承的5种方式
js是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承有以下通用的几种方式1.使用对象冒充实现继承(该种实现 ...
- JS原型继承与类的继承
我们先看JS类的继承 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &l ...
随机推荐
- hive新建分区表
hive新建分区表语句如下: create table table_name (col1_name string comment '备注1', col2_name string comment '备注 ...
- Shell中去除字符串前后空格的方法
[root@local ~]# echo " A BC " A BC [root@local ~]# eval echo " A BC " A BC 或者 [r ...
- [翻译 EF Core in Action 2.2] 创建应用程序的数据库上下文
Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...
- 重学前端 --- Promise里的代码为什么比setTimeout先执行?
首先通过一段代码进入讨论的主题 var r = new Promise(function(resolve, reject){ console.log("a"); resolve() ...
- 对.NET Core未来发展趋势的浅层判断
经常听到园里.NET开发人员在抱怨生态不如JAVA,想要转JAVA,所谓打不过你,我就加入你!杜兰特的思维方式固然是获取总冠军的一种方式,但是我们要关起门来问自己有没有杜兰特的实力. 用开发生态来类比 ...
- Java虚拟机一:运行时数据区域
java虚拟机在执行java程序的过程中,会把内存划分为若干个不同的数据区域.每个区域都有各自的用途,创建和销毁时间,按照<java虚拟机规范(Java SE 7 版)>的规定,虚拟机运行 ...
- Google XSS Challenge
https://xss-game.appspot.com/level1 https://xss-game.appspot.com/level1 payload: <svg onload=aler ...
- openlayers4 入门开发系列之船讯篇
前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...
- 【技术讨论】RF环境搭建手册
(原创文章,转载请注明出处.) 简要整理下环境搭建的步骤,以便快速.准确的搭建测试环境. 一.环境搭建 一.Python 2.7 1. 不要用Python3.6,很多库3.6中还没有,wxPython ...
- 加载静态界面----,要不要会加载cookie和页面参数
Server.Transfer(string.Format("/shouji/StaticHtml/RobLine/{0}.html", id),true); 加cookie. S ...