遇到的有关js继承和原型链的一个问题
function A(var1){
this.var1 = var1;
}
A.prototype = {
var1:1
}
var b=new A();
b.var1 = 2;
var c = new A();
console.log(b.var1); //输出2
console.log(c.var1); //输出undefined
function A(){
//do noting
}
A.prototype = {
var1:1
}
var b=new A();
b.var1 = 2;
var c = new A();
console.log(b.var1); //输出2
console.log(c.var1); //输出1
为什么输出不同,解释如下:
对于第一段代码:在实例化的过程中,b和c对象用到了A构造函数,那个var1都变成了b和c的自有属性,所以打印 b或者c的 var1属性的值的时候,直接从当前对象取值,而c的var1属性没有赋值,所以为undefined。
对于第二段代码:var1是b对象的自有属性而不是c的自有属性,所以打印b的值就是直接打印的自有属性的值2,而打印c则是打印的原型对象的值。
遇到的有关js继承和原型链的一个问题的更多相关文章
- js继承之原型链继承
面向对象编程都会涉及到继承这个概念,JS中实现继承的方式主要是通过原型链的方法. 一.构造函数.原型与实例之间的关系 每创建一个函数,该函数就会自动带有一个 prototype 属性.该属性是个指针, ...
- js继承之原型链方式实现
温故而知新: 在之前的文章已经重点了解了原型对象,今天就理一理这个原型对象在原型链式的继承中的使用 function a(x,y){this.x=x;this.y=y;} //定义一个函数,当构造函数 ...
- JS面向对象(2) -- this的使用,对象之间的赋值,for...in语句,delete使用,成员方法,json对象的使用,prototype的使用,原型继承与原型链
相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...
- JavaScript之继承(原型链)
JavaScript之继承(原型链) 我们知道继承是oo语言中不可缺少的一部分,对于JavaScript也是如此.一般的继承有两种方式:其一,接口继承,只继承方法的签名:其二,实现继承,继承实际的方法 ...
- JS中注意原型链的“指向”
昨天压缩Js文件时发现了项目中的一个prototype的问题代码如下所示: 1. <script> var XXX = function(){ }; var x1 = new XXX(); ...
- 一篇JavaScript技术栈带你了解继承和原型链
作者 | Jeskson 来源 | 达达前端小酒馆 1 在学习JavaScript中,我们知道它是一种灵活的语言,具有面向对象,函数式风格的编程模式,面向对象具有两点要记住,三大特性,六大原则. 那么 ...
- 关于JavaScript的原型继承与原型链
在讨论原型继承之前,先回顾一下关于创建自定义类型的方式,这里推荐将构造函数和原型模式组合使用,通过构造函数来定义实例自己的属性,再通过原型来定义公共的方法和属性. 这样一来,每个实例都有自己的实例属性 ...
- 理解js中的原型链
对象有”prototype”属性,函数对象有”prototype”属性,原型对象有”constructor”属性. 关于原型 在JavaScript中,原型也是一个对象,通过原型可以实现对象的属性继承 ...
- Inheritance and the prototype chain 继承和 原型 链
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain Inherita ...
随机推荐
- 强化学习使用pygame模块的安装
当你正想运行强化学习的游戏时,突然提示没有安装pygame模块怎么办呢? 其实很简单,通过下面的命令,就可以安装: D:\AI\sample\tensorforce>pip install py ...
- Docker及常用操作
镜像.容器和仓库 Docker镜像: 镜像是一个只读的模板,可以用来创建Docker容器.可以直接创建一个镜像,或者是更新已有镜像,或者复制他人的镜像直接使用. Docker容器: 容器是镜像的实例, ...
- 利用你的Mission Control--设置快速回到桌面等操作
第一步:打开系统偏好设置 第二步:进入设置界面点击 Mission Control 第三:Mission Control界面 进入Hot corners(触发角) 第四:设置mac屏幕四个角的快捷键( ...
- “App Store加载失败,使已购页面再试一次”解决方案
问题描述: 用A账户登陆App Store,下载了Xcode.还没有下载完就需要更换账户 更换账户 找到App Store界面上部的商店,选择注销,然后再登陆. 账户更换完毕,讲道理来说应该是可以下载 ...
- sqlserver获取代理服务作业job的执行情况
以下脚本为获取sqlserver的执行job with testtemp as( SELECT sch.job_id,--his.[server] as InstanceName CONVERT(nv ...
- Jmeter-Threads(Users)
setUp Thread Group---测试开始前的准备操作,每次测试前都会执行 A special type of ThreadGroup that can be utilized to perf ...
- POJ2891 Strange Way to Express Integers【扩展中国剩余定理】
题目大意 就是模板...没啥好说的 思路 因为模数不互质,所以直接中国剩余定理肯定是不对的 然后就考虑怎么合并两个同余方程 \(ans = a_1 + x_1 * m_1 = a_2 + x_2 * ...
- direct2D图片处理
转自:http://blog.csdn.net/augusdi/article/details/9040177 Using Bitmap Brushes Direct2D 中的图片处理增加了很多的灵 ...
- MyEclipse中将普通Java项目convert(转化)为Maven项目
在MyEclipse10中将Maven项目转成普通Java项目后,想将Java项目转成Maven项目,结果一下子傻眼了.根本就没有攻略中提到的config标签.仔细一看,喵咪的,人家用的是Eclips ...
- Linux history时间用户ip设置
Linux history时间用户ip设置 在使用linux服务器的时候发生一些不知道谁操作的问题,google一下说history命令可以查看到历史记录,用过之后发现还是不够详细,再g ...