span {
font-family: 'Consolas';
font-size: 10pt;
color: #ffffff;
}
.sc0 {
}
.sc2 {
color: #c0c0c0;
}
.sc4 {
color: #80ffff;
}
.sc5 {
font-weight: bold;
font-style: italic;
color: #00ffff;
}
.sc6 {
}
.sc10 {
font-weight: bold;
color: #80ffff;
}
.sc11 {
color: #ffff80;
}

1.Objuect 类型 Object 类型是所有对象的基类型,可以用 new 运算符产生一个 Object 类型。 开发者可以通过产生 Object 类型的实例并向其动态添加属性和方法来产生自己需要的 对象。如: var o = new Object(); ECMAScript 要求仅当构造函数需要参数时才需要括号,如果没有参数,括号可以省 略(不推荐这种做法)。如: var o = new Object; //legal, but not recommended 每一个 Object 类型的实例都有如下的属性和方法: constructor--产生对象所使用的函数。 hasOwnProperty(propertyName)--表明给定的属性是否存在于对象的实例而非原 型上,propertyName 必须是一个字符串或字符串类型的变量。 isPrototypeOf(object)--检查对象是否是参数对象实例的原型。 propertyIsEnumerable(propertyName)--表明参数所给定的属性是否可以在 for - in 语句中进行枚举。参数必须是一个字符串或字符串变量。 toLocaleString()--返回一个本地化了的对象的字符串表示。 toString()--返回对象的字符串表示。 valueOf()--返回一个与对象相对应的字符串、数值或布尔值。通常与 toString() 返回的结果是相同的。 因为在 ECMAScript 中,Object 是所有对象的基类型,所以,每一个对象都拥有这些 基本的属性和方法。但是,像 BOM 和 BOM 这些浏览器对象和文档对象,他们的实现与宿 主环境有关,不受 ECMA-262 的制约,他们不一定是直接从 Object 所继承而来。 2.原型(prototype) 每当一个函数产生时,它的 prototype 属性也将根据某些特定的规则产生。默认情况 下,所有的 prototype 自动地获得一个名称为 constructor 的属性,该属性指向以该原 型作为属性的函数。可以用 isPrototypeOf() 方法来判断一个对象(类)是否为某个对 象实例的原型。如: alert(Person.prototype.isPrototypeOf(person1)); alert(Person.prototype.isPrototypeOf(person2)); ECMAScript 5 增加了一个叫做 Object.getPrototypeOf() 的方法,该方法存在于 Object 类型上,可以认为是一个静态方法。该方法用于获得一个对象实例的原型。支 持该方法的浏览器有 IE 9+, Firefox 3.5+, Safari 5+, Opera 12+, and Chrome。 其用法如: alert(Object.getPrototypeOf(person1) == Person.prototype); alert(Object.getPrototypeOf(person1).name); 3.实例属性与原型属性 当一个属性被添加到对象的实例上后,该属性会屏蔽在原型上与之同名的任何属性 (但可以通过实例的 prototype 访问原型上的属性)。对于实例上属性的改变不会影 响到原型上相同名称的属性。 delete 运算符可以删除实例上的属性,使得原型上相应的属性可以被直接访问。 hasOwnProperty() 方法可以判定一个属性是存在于对象的实例上还是原型上。该 方法继承自 Object。仅当属性存在于对象实例上时该方法返回 true,否则,返回 false。如: alert(person1.hasOwnProperty("name")); 4.原型和 in 运算符 in 运算符有两种使用方法:单独使用或在 for - in 循环语句中使用。单独使用 时,如果对象指定名称的属性可以访问,结果就是 true。这意味着,该属性可能存在 于实例上,也可能是存在于原型上。结合 hasOwnProperty() 方法与 in 运算符可以 判定对象的属性是否仅存在于原型上,如: function onlyHasPrototypeProperty(object, name){ return !object.hasOwnProperty(name) && (name in object); } 当在 for - in 语句中使用 in 运算符时,对象所有可访问可枚举的属性都将被 返回,包括实例属性和原型属性。屏蔽原型上不可枚举的实例属性也将被返回,因为 开发者定义的属性都是可枚举的。但在 IE8- 上却是例外。如: var o = { toString : function () { return "My Object"; } }; for (var prop in o) { if (prop == “toString”) { alert("Found toString"); //won’t display in Internet Explorer } } 这使得在 IE8- 上,所有 Object 上的属性和方法都不可以被枚举。 5.对象属性的枚举 ECMAScript 5 提供一个 Object.keys() 方法用于检索对象上所有可枚举的实例 属性。它接受一个对象作为参数,并返回一个字符串数组,包含所有检索到的属性的 名称。如: function Person() { } Person.prototype.name = "Nicholas"; Person.prototype.age = 29; Person.prototype.job = "Software Engineer"; Person.prototype.sayName = function () { alert(this.name); }; var keys = Object.keys(Person.prototype); alert(keys); //”name,age,job,sayName” var p1 = new Person(); p1.name = "Rob"; p1.age = 31; var p1keys = Object.keys(p1); alert(p1keys); //”name,age” getOwnPropertyNames() 方法用于检索对象所有可枚举和不可枚举的实例属性。 var keys = Object.getOwnPropertyNames(Person.prototype); alert(keys); //"constructor,name,age,job,sayName" var keys = Object.getOwnPropertyNames(p1); alert(keys); //"name,age" for (var prop in p1) { alert(prop); //依次输出:name,age,job,sayName } 支持 Object.keys() 和 Object.getOwnPropertyNames() 方法的浏览器有 IE9+, Firefox 4+, Safari 5+, Opera 12+, 和 Chrome。

作者: Cloudy Waterman

水平有限,文中错误不妥在所难免,欢迎批评指正建议评论。文章将不定期修改完善斧正。转载请注明出处,谢谢!

JavaScript 中 Object ,Prototype 相关的属性和方法的更多相关文章

  1. JavaScript中Object.prototype.toString方法的原理

    在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. ? 1 2 var arr = []; console.lo ...

  2. JavaScript中易混淆的DOM属性及方法对比

    JavaScript中易混淆的DOM属性及方法对比 ParentNode.children VS Node.prototype.childNodes ParentNode.children:该属性继承 ...

  3. JavaScript中的window对象的属性和方法;JavaScript中如何选取文档元素

    一.window对象的属性和方法 ①setTimeout()方法用来实现一个函数在指定毫秒之后运行,该方法返回一个值,这个值可以传递给clearTimeout()用于取消这个函数的执行. ②setIn ...

  4. JS中Object常用的一些属性和方法

    1⃣️属性 刚接触prototype.constructor.proto这三个玩意儿的时候,是不是有点儿傻傻分不清楚的感觉?下面来简单的说下... 举

  5. JavaScript中Object的总结

    基于原型继承,动态对象扩展,闭包,JavaScript已经成为当今世界上最灵活和富有表现力的编程语言之一. 这里有一个很重要的概念需要特别指出:在JavaScript中,包括所有的函数,数组,键值对和 ...

  6. 谈谈javascript中的prototype与继承

    谈谈javascript中的prototype与继承 今天想谈谈javascript中的prototype. 通常来说,javascript中的对象就是一个指向prototype的指针和一个自身的属性 ...

  7. JavaScript中四种不同的属性检测方式比较

    JavaScript中四种不同的属性检测方式比较 1. 用in方法 var o = {x:1}; "x" in o; //true "y" in o; //fa ...

  8. JavaScript中的prototype和__proto__细致解析

    最近在学js,体会了一点点它的灵活性.对于初学者的我,总是被它的灵活感到晕头转向,最近发现了一点东西想与大家分享. JavaScript中的prototype和_proto_: 我们先了解一点js中的 ...

  9. JavaScript -- 时光流逝(四):js中的 Math 对象的属性和方法

    JavaScript -- 知识点回顾篇(四):js中的 Math 对象的属性和方法 1. Math 对象的属性 (1) E :返回算术常量 e,即自然对数的底数(约等于2.718). (2) LN2 ...

随机推荐

  1. Java学习(构造方法、this关键字、super应用)

    构 造 方 法 定义:对象创建时使用的方法,即在new一个新对象时,对应构造方法,直接对属性赋值. 语句格式:    修饰符(public 等) 构造方法名(必须跟当前类名一样,否则报错)(参数列表) ...

  2. 寻找并输出11~999之间的回文数m

    寻找并输出11~999之间的数m,它满足m.m2和m3均为回文数. 回文:各位数字左右对称的整数. 例如:11满足上述条件 112=121,113=1331 判断一个数是否是回文数的方法:求该数的反序 ...

  3. 【51nod】1244 莫比乌斯函数之和

    题解 求积性函数的前缀和?杜教筛! 这不给一发杜教筛入门必备之博客= = https://blog.csdn.net/skywalkert/article/details/50500009 好了,然后 ...

  4. Codeforces Round #489 (Div. 2) E - Nastya and King-Shamans

    E - Nastya and King-Shamans 题目大意:有n个数,每一次操作更改一个数,每次操作之后问你是否有一个数等于其前面所有数的和. 思路:好题,想了很久没想出来,看了题解,主要思想就 ...

  5. C#后台获取ajax传来的xml格式数据值

    前台: var xml = "<root>"; if(Name!=null) { xml += "<name>"+Name +" ...

  6. python网页下载

    python 2.7版本下可以运行 import urllib2 def getHtml(url): response = None requset = None headers = {'User-A ...

  7. SCU 4443 Range Query

    二分图最大匹配,枚举. 可以计算出每一个位置可以放哪些数字,每个数字可以放在哪些位置,这样就可以建二分图了. 如果二分图最大匹配不到$n$,则无解.否则构造字典序最小的解,可以枚举每一位放什么数字,然 ...

  8. JZYZOJ1540 BZOJ4035 [ haoi2015 上午] T3 博弈论 sg函数 分块 haoi

    http://172.20.6.3/Problem_Show.asp?id=1540 之前莫比乌斯反演也写了一道这种找规律分块计算的题,没觉得这么恶心啊. 具体解释看代码. 翻硬币的具体方法就是分别算 ...

  9. Nginx日志切割工具——logrotate 使用记录

    1.安装 logrotate是Linux系统自带,无需安装 2.配置 进入[/etc/logrotate.d/nginx]文件修改配置 # 需要备份的日志路劲,一个或多个都可以 /data/logs/ ...

  10. 洛谷P1462 通往奥格瑞玛的道路

    题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡奥格瑞玛 题目描述 在艾泽拉斯, ...