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继承和原型链的一个问题的更多相关文章

  1. js继承之原型链继承

    面向对象编程都会涉及到继承这个概念,JS中实现继承的方式主要是通过原型链的方法. 一.构造函数.原型与实例之间的关系 每创建一个函数,该函数就会自动带有一个 prototype 属性.该属性是个指针, ...

  2. js继承之原型链方式实现

    温故而知新: 在之前的文章已经重点了解了原型对象,今天就理一理这个原型对象在原型链式的继承中的使用 function a(x,y){this.x=x;this.y=y;} //定义一个函数,当构造函数 ...

  3. JS面向对象(2) -- this的使用,对象之间的赋值,for...in语句,delete使用,成员方法,json对象的使用,prototype的使用,原型继承与原型链

    相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...

  4. JavaScript之继承(原型链)

    JavaScript之继承(原型链) 我们知道继承是oo语言中不可缺少的一部分,对于JavaScript也是如此.一般的继承有两种方式:其一,接口继承,只继承方法的签名:其二,实现继承,继承实际的方法 ...

  5. JS中注意原型链的“指向”

    昨天压缩Js文件时发现了项目中的一个prototype的问题代码如下所示: 1. <script> var XXX = function(){ }; var x1 = new XXX(); ...

  6. 一篇JavaScript技术栈带你了解继承和原型链

    作者 | Jeskson 来源 | 达达前端小酒馆 1 在学习JavaScript中,我们知道它是一种灵活的语言,具有面向对象,函数式风格的编程模式,面向对象具有两点要记住,三大特性,六大原则. 那么 ...

  7. 关于JavaScript的原型继承与原型链

    在讨论原型继承之前,先回顾一下关于创建自定义类型的方式,这里推荐将构造函数和原型模式组合使用,通过构造函数来定义实例自己的属性,再通过原型来定义公共的方法和属性. 这样一来,每个实例都有自己的实例属性 ...

  8. 理解js中的原型链

    对象有”prototype”属性,函数对象有”prototype”属性,原型对象有”constructor”属性. 关于原型 在JavaScript中,原型也是一个对象,通过原型可以实现对象的属性继承 ...

  9. Inheritance and the prototype chain 继承和 原型 链

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain Inherita ...

随机推荐

  1. 强化学习使用pygame模块的安装

    当你正想运行强化学习的游戏时,突然提示没有安装pygame模块怎么办呢? 其实很简单,通过下面的命令,就可以安装: D:\AI\sample\tensorforce>pip install py ...

  2. Docker及常用操作

    镜像.容器和仓库 Docker镜像: 镜像是一个只读的模板,可以用来创建Docker容器.可以直接创建一个镜像,或者是更新已有镜像,或者复制他人的镜像直接使用. Docker容器: 容器是镜像的实例, ...

  3. 利用你的Mission Control--设置快速回到桌面等操作

    第一步:打开系统偏好设置 第二步:进入设置界面点击 Mission Control 第三:Mission Control界面 进入Hot corners(触发角) 第四:设置mac屏幕四个角的快捷键( ...

  4. “App Store加载失败,使已购页面再试一次”解决方案

    问题描述: 用A账户登陆App Store,下载了Xcode.还没有下载完就需要更换账户 更换账户 找到App Store界面上部的商店,选择注销,然后再登陆. 账户更换完毕,讲道理来说应该是可以下载 ...

  5. sqlserver获取代理服务作业job的执行情况

    以下脚本为获取sqlserver的执行job with testtemp as( SELECT sch.job_id,--his.[server] as InstanceName CONVERT(nv ...

  6. Jmeter-Threads(Users)

    setUp Thread Group---测试开始前的准备操作,每次测试前都会执行 A special type of ThreadGroup that can be utilized to perf ...

  7. POJ2891 Strange Way to Express Integers【扩展中国剩余定理】

    题目大意 就是模板...没啥好说的 思路 因为模数不互质,所以直接中国剩余定理肯定是不对的 然后就考虑怎么合并两个同余方程 \(ans = a_1 + x_1 * m_1 = a_2 + x_2 * ...

  8. direct2D图片处理

    转自:http://blog.csdn.net/augusdi/article/details/9040177  Using Bitmap Brushes Direct2D 中的图片处理增加了很多的灵 ...

  9. MyEclipse中将普通Java项目convert(转化)为Maven项目

    在MyEclipse10中将Maven项目转成普通Java项目后,想将Java项目转成Maven项目,结果一下子傻眼了.根本就没有攻略中提到的config标签.仔细一看,喵咪的,人家用的是Eclips ...

  10. Linux history时间用户ip设置

    Linux history时间用户ip设置        在使用linux服务器的时候发生一些不知道谁操作的问题,google一下说history命令可以查看到历史记录,用过之后发现还是不够详细,再g ...