javascript中uber实现子类访问父类成员
function Animal(){}
Animal.prototype={
name:"animal",
toString:function(){
console.log(this.name);
}
};
Animal.prototype.constructor=Animal;
function Dog(){}
//用于打破对象的引用传递,防止修改子类属性对父类产生影响
var F=function(){}
F.prototype=Animal.prototype
Dog.prototype=new F();
Dog.prototype.constructor=Dog;
Dog.prototype.name="dog";
var d=new Dog();
d.toString(); //打印子类name dog
var a=new Animal();
a.toString();//打印父类name animal
上面代码通过实例化子类和父类,分别调用toString()实现了继承的关系。
这个时候有这样的需求;不实例化父类,直接通过子类完完整整的调用父类的方法或属性。
实现代码如下
function Animal(){}
Animal.prototype={
name:"animal",
toString:function(){
console.log(this.name);
}
};
Animal.prototype.constructor=Animal;
function Dog(){}
//用于打破对象的引用传递,防止修改子类属性对父类产生影响
var F=function(){}
F.prototype=Animal.prototype
Dog.prototype=new F();
Dog.prototype.constructor=Dog;
Dog.prototype.name="dog";
Dog.uber=Animal.prototype;
var d=new Dog();
d.toString(); //打印子类name dog
//var a=new Animal();
//a.toString();//打印父类name animal
/**
* Dog.prototype.constructor===d.constructor
*/
Dog.prototype.constructor.uber.toString();//打印animal(方式1)
d.constructor.uber.toString(); //打印animal(方式2)
通过面简单的三行红色代码就实现了子类访问父类成员的需求。
本来想模仿java的使用super访问父类,后来想想super是javascript的关键字。
javascript中uber实现子类访问父类成员的更多相关文章
- Java子类访问父类的私有成员变量
/**子类会继承父类所有的属性和方法. * 但是根据不同的权限标识符,子类不可见父类的私有变量,但可以通过父类的公共方法访问私有变量 * 所以对于重名变量,子类和父类都各有一份. * 对于子类和父类中 ...
- 转:C++:从子类访问父类的私有函数
众所周知,c和c++的数组都是不安全的,因为无论c还是c++都不提供数组边界检查功能,这使得数组溢出成为可能.从某个意义上说,c和c++是一种缺少监督的语言,然而这也正是其魅力所在.c++给予程序员更 ...
- super关键字访问父类成员
1.super只能出现在子类的方法和构造方法中: 2.super调用构造方法时只能是第一句: 3.super不能访问父类的private成员.
- c++子类和父类成员函数重名
子类和父类返回值参数相同,函数名相同,有virtual关键字,则由对象的类型决定调用哪个函数. 子类和父类只要函数名相同,没有virtual关键字,则子类的对象没有办法调用到父类的同名函数,父类的同名 ...
- public、potected 、private继承下的子类对父类成员的访问情况
#include<iostream> #include<string> using namespace std; class parent{ protected: int m_ ...
- 【C++】子类访问父类typedef的问题
class A { public: typedef int* pointer; }; class B :public A { public: pointer b; }; 这段代码运行没有问题,子类继承 ...
- 子类覆写的变量被private隐藏,强制转换方式通过子类访问父类的被覆写变量:
import static java.lang.System.*; public class SuperParent{ public static void main(String[] args){ ...
- JavaScript中的数据属性和访问器属性
在学习JavaScript原型(prototype)和原型链(prototype chain)知识的时候,发现数据属性和访问器属性的重要性,通过不断的查找相关知识,浅显理解如下,若有差错,希望不吝赐教 ...
- JavaScript中Get和Set访问器的实现
我们常用的实现方法可能是这样的: function Field(val){ var value = val; this.getValue =function(){ return value; }; t ...
随机推荐
- Python学习day24-面向对象的三大特征之继承
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- springboot2 +thymeleaf
springboot 1.5. 9+ thymeleaf <!--sidebar--> <nav class="col-md-2 d-none d-md-block bg- ...
- WebSockets
WebSocket 是为了在一个单独的持久连接上提供全双工的双向通信.有关WebSocket API的内容可以参考这里. 这里简单说明下WebSocket在javascript中的用法. 1 WebS ...
- JZOJ5822 【NOIP提高A组模拟2018.8.16】 量子纠缠
这是一道很巧妙的题目. 今早,我调了好久,终于将它切掉了-- 题目 Description Input 第一行包含一个正整数 m,代表操作数. 接下来 m 行,每行可能有以下形式: 1 s 代表将数字 ...
- jaxFileUpload插件异步上传图片
第一步:引入jquery文件和jaxFileUpload文件 文件位置:https://pan.baidu.com/s/1jHEyIyy 第二步,前端: <div class="for ...
- 在 Angularjs 中$state.go 如何传递参数
在目标页面规定接受的参数: .state('app.AttendanceEditFixed', { url: '/AttendanceEditFixed', params: {'id': null,' ...
- C++和G++手工开栈的=_=
微软的编译器(C++) #pragma comment(linker, "/STACK:102400000,102400000") G++ << ; // 256MB ...
- dubbo入门学习(三)-----dubbo整合springboot
springboot节省了大量的精力去配置各种bean,因此通过一个简单的demo来整合springboot与dubbo 一.创建boot-user-service-provider 本篇博文基于上篇 ...
- vue项目 环境搭建
1.前端安装 安装项目:vue init webpack docvote 进入docvote里:cd docvote 安装脚手架:cnpm i 运行:npm run dev 2.异步加载 const ...
- 二、深入asyncio协程(任务对象,协程调用原理,协程并发)
由于才开始写博客,之前都是写笔记自己看,所以可能会存在表述不清,过于啰嗦等各种各样的问题,有什么疑问或者批评欢迎在评论区留言. 如果你初次接触协程,请先阅读上一篇文章初识asyncio协程对asy ...