这里有新鲜出炉的 Javascript 教程,程序狗速度看过来!
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
这篇文章主要介绍了 javascript 中对象的定义、使用以及对象和原型链操作, 结合实例形式总结分析了 javascript 对象操作的常用技巧, 需要的朋友可以参考下
本文实例总结了 javascript 中对象的定义、使用以及对象和原型链操作。分享给大家供大家参考,具体如下:
1. 除了 5 种基本类型外,JS 中剩下的就是对象
(1)对象的定义:
直接定义:
- var test = {
- x: 1,
- y: 1
- }
new 方式创建:
- var test = new Object({
- x: 1
- })
Object.create 方式:
- var test = Object.create({
- x: 1
- })
(2)对象上的赋值与取值
举例:
- var test={
- x:1,
- y:2
- }
方法一:可以通过 test['x'] 取值
方法二:可以通过 test.x 取值
本质,将 [] 里面的值 toString 之后取到,比如我们这里有赋值语句比如:
- test[{}]=3;
可以通过 test[{z:1}] 取到值 3,若为 5 大基本类型,则要通过相同值取。
简而言之,就是 test 内部的值会调用 toString 方法后存储。
2. 对象与原型链
(1)这里涉及到了 JS 中的继承,JS 的对象中除了 null,其他都继承于原型对象 object.prototype, 也就是说 JS 的大部分对象的原型链上的顶端都具有对象 object.prototype.
JS 是基于原型链集成的,并且对象上可以访问到原型链上对象的属性和方法。
举例:
- function test() {
- this.x = x;
- this.y = y
- }
- var my = new test();
- test.prototype.z = 3;
- alert(my.z); //输出为3
test.prototype 为 my 的直接父链原型,并且 my 也可以沿着原型链查找,直到 object.prototype,因此可以实现 object.prototype 中的方法,比如
- my.toString();//返回[object Object]
(2)原型链对于对象遍历的影响
我们上述定义了一个对象 my, 如果对对象使用 for in 遍历,那么会有
- function test(){
- this.x=1;
- this.y=2;
- }
- var my=new test();
- test.prototype.z=3;
- console.log(my.__proto__);//会输出test.prototype
- for( p in my)
- {
- console.log(my[p])//会输出1,2,3
- }
我们发现最后输出了 my[p] 的值为 1,2,3,发现遍历 my 上的属性时候,把 my 对象原型链上的属性也遍历出来了。
补充:并且这种遍历是无序的。
(3)特殊赋值
针对上述例子,如果我们对 my 对象进行赋值,
- my.z=4;
- alert(my.z);//这里得到的值为4
我们发现,如果对象上的属性和对象原型上的对象冲突,优先对于对象上属性进行赋值。
(4)在对象的原型链上,所有对象都继承与 object.prototype,除了 null,我们可以用以下链式来反应:
my(或者其他对象)—>test.prototype–>……..–>object.prototype——>null
希望本文所述对大家 JavaScript 程序设计有所帮助。
来源: http://www.phperz.com/article/17/0522/329565.html