javascript对象继承
- eg: function a(){};
- var instance = new a();
- //new原理:
- var obj={};
- obj._proto_ = a.prototype;
- a.call(this);
- return obj
- eg2:function Point(x, y) { this.x = x; this.y = y; }
- Point.prototype = {
- print: function () { console.log(this.x, this.y); }
- };
- var p = new Point(10, 20);
- p.print(); // 10 20
- function F(){};
- F.prototype = obj;
- return new F();
- eg:
- var person = {
- name: "Nicholas",
- friends: ["Shelby", "Court", "Van"]
- };
- var anotherPerson = Object.create(person);
- anotherPerson.name = "Greg";
- anotherPerson.friends.push("Rob");
- var yetAnotherPerson = Object.create(person);
- yetAnotherPerson.name = "Linda";
- yetAnotherPerson.friends.push("Barbie");
- alert(person.friends); //"Shelby,Court,Van,Rob,Barbie"
借用构造函数继承
,在子类中直接执行父类构造函数。可以在子类型构造函数中向超类型构造函 数传递参数
- function SuperType(name){
- this.name = name;
- }
- function SubType(){
- //继承了 SuperType,同时还传递了参数
- SuperType.call(this, "Nicholas");
- //实例属性
- this.age = 29;
- }
- var instance = new SubType();
- alert(instance.name); //"Nicholas";
- alert(instance.age); //
组合继承(最常用的继承模式)
- function SuperType(name){
- this.name = name;
- this.colors = ["red", "blue", "green"];
- }
- SuperType.prototype.sayName = function(){
- alert(this.name);
- };
- function SubType(name, age){
- //继承属性
SuperType.call(this, name);- this.age = age;
- }
- //继承方法
- SubType.prototype = new SuperType();
SubType.prototype.constructor = SubType;
SubType.prototype.sayAge = function(){- alert(this.age);
- };
- var instance1 = new SubType("Nicholas", 29);
- instance1.colors.push("black");
- alert(instance1.colors);
- instance1.sayName();
- instance1.sayAge();
- //"red,blue,green,black"
- //"Nicholas";
- //
- var instance2 = new SubType("Greg", 27);
- alert(instance2.colors);
- instance2.sayName();
- instance2.sayAge();
- //"red,blue,green"
- //"Greg";
- //
寄生组合式继承是引用类型最理想的继承范式
- function inheritPrototype(subType, superType){
- var prototype = object(superType.prototype);//创建对象
- prototype.constructor = subType; //增强对象
- subType.prototype = prototype;//指定对象
- }
javascript对象继承的更多相关文章
- JavaScript 对象继承 OOP (三)
对象继承 A 对象通过继承 B 对象,就能直接拥有 B 对象的所有属性和方法.这对于代码的复用是非常有用的. JavaScript 语言的继承不通过 class (es6 中的class 不过是 ...
- javascript对象继承的实现
现在有两个对象,需要实现Chinese类型对象对Person类型对象的继承. 这里分两部分,属性和方法. 属性可以直接用构造函数的方法实现继承,而方法则要通过原型链来实现继承. 先解释什么是原型链,每 ...
- 详解JavaScript对象继承方式
一.对象冒充 其原理如下:构造函数使用 this 关键字给所有属性和方法赋值(即采用类声明的构造函数方式).因为构造函数只是一个函数,所以可使 Parent 构造函数成为 Children 的方法,然 ...
- JavaScript对象 继承
JavaScript继承主要依靠原型链实现. 原型链 利用原型让一个引用类型继承另一个引用类型水位属性和方法. 每一个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指 ...
- JavaScript对象继承方式
一.对象冒充 其原理如下:构造函数使用 this 关键字给所有属性和方法赋值(即采用类声明的构造函数方式).因为构造函数只是一个函数,所以可使 Parent 构造函数 成为 Children 的方法, ...
- javascript对象继承详解
问题 比如我们有一个"动物"对象的构造函数. function animal() { this.type = '动物'; } 还有一个"猫"对象的构造函数. f ...
- Javascript 对象继承 原型链继承 对象冒充 call 混合方式
一.原型链继承 function ClassA() {} ClassA.prototype.color = "blue"; ClassA.prototype.sayColor = ...
- JavaScript创建对象及对象继承
面向对象的语言有一个标志,那就是他们都有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象.但是在ECMAScript中没有类的概念,因此它的对象也与基于类的对象有所不同.实际上,JavaSc ...
- web前端学习(二) javascript对象和原型继承
目录 1. JavaScrpt对象 2. 原型对象和继承 3. 对象的克隆 (1)javascript对象 在JS中,对象是属性的容器.对于单个对象来说,都由属性名和属性值构成:其中属性名需要是标识符 ...
随机推荐
- Hibernate_day03--课程安排_表之间关系_一对多操作
Hibernate_day03 上节内容 今天内容 表与表之间关系回顾(重点) Hibernate的一对多操作(重点) 一对多映射配置(重点) 一对多级联操作 一对多级联保存 一对多级联删除 一对多修 ...
- 使用Audio API设计绚丽的HTML5音乐播放器
HTML5 有两个很炫的元素,就是Audio和 Video,可以用他们在页面上创建音频播放器和视频播放器,制作一些效果很不错的应用. 无论是视屏还是音频,都是一个容器文件,包含了一些音频轨道,视频轨道 ...
- css+jq写的小小的移动端按钮的动画改变(三个很闲变成一个叉号)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Android Studio添加assets文件夹
Step #1:调出项目结构管理区域 View->Tool Windows->Project Step #2:结构管理区域选择“Project” Step #3:新建"asset ...
- System.getProperty()方法大全 (转载)
System.out.println("java版本号:" + System.getProperty("java.version")); // java版本号S ...
- [算法][LeetCode]Single Number——异或运算的巧妙运用
题目要求 Given an array of integers, every element appears twice except for one. Find that single one. N ...
- MongoDB插入多条数据
刚开始学mongodb,只知道几个命令,insert插入也只能一条一条插入,而在实际情况下数据一般都非常多,刚开始想直接上传json文件,网上搜了n多方法发现这种方法不好弄,然后就想着要么一下子把多条 ...
- jenkins multijob 插件使用
如果你想要停止对下游/上游工作链定义的混乱 当您想要添加具有层次结构的任务时,按顺序执行或并行执行 安装multijob插件可以让jenkins任务按照分组.顺序执行 jenkins版本:2.80 1 ...
- spring-boot Web集群
SpringBoot启动类增加注解 @EnableRedisHttpSession @SpringBootApplication @ImportResource({"classpath:co ...
- 进击的RecyclerView入门一(简单上手)
虽然RecyclerView面世有一段时间了,但由于它的学习成本相对较高,很多码友只是粗略的认识了一下而没有细致的品味RecyclerView的真谛. 那么从现在开始我将带你装逼带你飞,一起领略Goo ...