JavaScript 对象的值查找

Javascript对象的值查找规则:

  • 查找顺序
  1. 该对象本身
  2. 该对象构造函数的prototype
  3. 该对象构造函数的prototype 的构造函数的prototype,以这样的方式沿原型链条逐级查找, 直至Object的prototype
  • 整个查找链条中都没有找到则返回 undefine
  • 查找过程中一旦找到则返回找到的值
 1 Object.prototype.foo = ‘bar‘;
 2
 3 function People() {}
 4 People.prototype.kind = ‘People‘;
 5
 6 function Chinese() {}
 7 Chinese.prototype = new People();
 8 Chinese.prototype.constructor = Chinese;
 9 Chinese.prototype.country = ‘China‘;
10 Chinese.prototype.name = ‘Chinese‘;
11
12 var zhangsan = new Chinese();
13 zhangsan.name = ‘zhang san‘;
14
15 console.log(zhangsan.name); // zhang san, from zhangsan object,[推测] --> Chinese.prototype中对name的设定被不会被查找
16 console.log(zhangsan.country); // China, from Chinese‘s prototype
17 console.log(zhangsan.kind); // People, from Person‘s prototype
18 console.log(zhangsan.foo); // bar, from Object‘s prototype
19 console.log(zhangsan.age); // undefine
时间: 2024-08-30 13:26:05

JavaScript 对象的值查找的相关文章

JavaScript强化教程——对象的值传递和引用传递

本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍:JavaScript强化教程--对象的值传递和引用传递 function SetName(obj){  obj.name="Tom";//执行之前,此时的obj和Person的name属性均为undefined  obj1=new Object();  obj1=obj;//声明一个全局对象,那么obj.obj1和Person此时应该是同一个对象  }//SetName函数执行完之后,obj对象销毁,其余对象仍然存在  Pe

javascript 对象(四)

一.对象概述 对象中包含一系列的属性,这些属性是无序的.每个属性都有一个字符串key和对应的value. var obj={x:1,y:2}; obj.x; obj.y; 1.为什么属性的key必须是字符串 重点: 可见,字符串的1和数字1访问的都是同一个属性 不管把空对象作为一个key,还是用带有x属性的对象作为key,实际上javascript都会把它转化为字符串,会toString()一下再去处理.所以最终依然指向同样一个属性. 2.对象结构 1.对象属性的结构 对象的属性可以动态添加和删

深入学习JavaScript对象

JavaScript中,除了五种原始类型(即数字,字符串,布尔值,null,undefined)之外的都是对象了,所以,不把对象学明白怎么继续往下学习呢? 一.概述 对象是一种复合值,它将很多值(原始值或其他对象)聚合在一起,可通过属性名访问这些值.而属性名可以是包含空字符串在内的任意字符串.JavaScript对象也可以称作一种数据结构,正如我们经常听说的“散列(hash)”.“散列表(hashtable)”.“字典(dictionary)”.“关联数组(associative array)”

JavaScript对象(复习笔记)

js对象 对象构造器 function person(firstname,lastname,age,eyecolor){ this.firstname=firstname; this.lastname=lastname; this.age=age; this.eyecolor=eyecolor; } myFather=new person("John","Doe",50,"blue"); 或者 person={firstname:"Jo

JavaScript大杂烩5 - JavaScript对象的若干问题

1. 类型检查:instanceof与typeof 这是两个相似的操作符,instanceof用于检测函数的实例类型,主要是在面向对象编程中检查new出来的对象类型,需要注意instanceof是检查function对象的,前面实现的复制继承中的例子就不适用于使用instanceof来检查继承关系了.typeof,它用于检测变量的类型,在实际情况中应用的不是很多,稍微了解一下就可以了. 在使用typeof之前,有一点需要确认,那就是string与String不是同一个类型,这个不用多说了,我们前

深入浅出 JavaScript 对象 v0.5

JavaScript 没有类的概念,因此它的对象与基于类的语言中的对象有所不同.笔者主要参考<JS 高级程序设计>.<JS 权威指南>和<JS 精粹> 本文由浅入深的讲解了对象的概念,特性,和使用,由于笔者水平的确有限,有些观点也是边理解,边查证,边分享. 希望大家都能感受到分享的乐趣,祝我们共同进步,请大家不吝交流. 目录 对象是什么? 对象有什么特性? 对象有什么用? 如何创建对象? 对象直接量 工厂方法创建对象 通过 new 创建对象 对象属性的查询与设置(检索与

javascript——对象

分类 JavaScript对象分类: 内置对象:由ECMAScript规范定义的对象或类,例如:数组.函数.日期(Date()).正则表达式 宿主对象:是由js解释器所嵌入的宿主环境(比如Web浏览器)定义的. 自定义对象:是由运行中的js代码创建的对象 JavaScript属性分类: 自有属性:直接在对象中定义的属性 继承属性:是在对象的原型对象中定义的属性 创建对象 可以通过对象直接量.关键字new.Object.create()函数创建对象 (1)对象直接量: 最简单的创建对象方式 1 v

JavaScript对象基础讲解

1.Object对象详解 javascript 里最基本的数据类型是对象. javaScript里的对象其实是一个无序的属性集合,属性又是一个个的名-值对. 除了字符串,数字,true,false,null或者undefined以外,其他所有的值在JavaScript里头都是对象. 对象是引用类型,如果变量x表示一个对象,当执行vary = x;语句后,实际上y和x指向的是同一个对象.所以,当你通过y改变对象的值,这种变化也会反映到x上. Object是在javascript中一个被我们经常使用

Javascript对象----继承

Javascript对象具有"自有属性",也有一些属性是从原型对象继承而来的.为了更好地理解这种继承,必须更深入地了解属性访问的细节. 假设要查询对象o的属性x,如果o中不存在x,那么将会在o的原型对象中查询属性x.如果原型对象中也没有x,但这个原型对象也有原型,那么会继续在这个原型对象的原型上执行查询,直到找到X或者查找到一个原型是null的对象位置.可以看到,对象的原型属性构成了一个"链",通过这个"链"可以实现属性的继承. var o =