javascript程序设计
javascript的原型链有显式和隐式两种:
显式原型链:即我们常见的prototype;
隐式原型链:在一般环境下无法访问,即不可见,在FireFox下可以通过__proto__方式访问;隐式原型链用于javascript引擎内部对原型链的搜寻,通过显示原型链来设置;
一、prototype和__proto__的概念
prototype是函数的一个属性(每个函数都有一个prototype属性),这个属性是一个指针,指向一个对象。它是显示修改对象的原型的属性。
__proto__是一个对象拥有的内置属性(请注意:prototype是函数的内置属性,__proto__是对象的内置属性),是JS内部使用寻找原型链的属性。
用chrome和FF都可以访问到对象的__proto__属性,IE不可以。
二、new 的过程
var Person = function(){};var p = new Person();
new的过程拆分成以下三步:
(1) var p={}; 也就是说,初始化一个对象p
(2) p.__proto__ = otype;
(3) (p); 也就是说构造p,也可以称之为初始化p
关键在于第二步,我们来证明一下:
var Person = function(){};var p = new Person();alert(p.__proto__ === otype);
这段代码会返回true。说明我们步骤2是正确的.。
三、示例
var Person = function(){};ame = function() { alert("My Name is Jacky");}; = 27;var p = new Person();ame();
p是一个引用指向Person的对象。我们在Person的原型上定义了一个sayName方法和age属性,当我们执行时,会先在this的内部查找(也就是构造函数内部),如果没有找到然后再沿着原型链向上追溯。
这里的向上追溯是怎么向上的呢?这里就要使用__proto__属性来链接到原型(也就是otype)进行查找。最终在原型上找到了age属性。
-
万恶的function在javascript中的运用实例分析
javascript中最有特色而又让你困惑的function算一个了下面看一下常用操作复制代码代码如下:functiondoit(){.....}doit();javascript中的函数我们可以把它当作方法使用复制代码代码如下:varobj=newObject();=function(){.....}();而function实际上就是对象(即F...
-
浅谈jquery 注意事项与常用语法
1、关于选择器中含有特殊符号选择器中含有".","#","(","]"等特殊字符,根据W3C的规定,属性值中是不能含有这些特殊字符的,例如:复制代码代码如下:bb如果按照普通的方式来获取,例如:复制代码代码如下:$("#id#b");$("#id[1]");以上代码不能正确获取到元素,正确的写法如下:复...
-
javascript操作select元素案例分析
本文实例讲述了javascript操作select元素的.用法。分享给大家供大家参考。具体分析如下:这里熟悉一下js对select元素的操作,html页面中建立一个form,其中包含一个select元素和submit按钮。当选择select中某一项时改变其文字,当select中所有项的文字都改变后,重新恢...
-
css经典教程
css经典教程1有些习惯显得尤为重要,今天与您分享六个CSS习惯。因为习惯其实是会变的,所以只能写“最近”的。这些习惯都跟技术无关,如果不遵守,也不会出错。但是我觉得良好的习惯会体现一个人的素质。我们在中向大家介绍过很多CSS经验与技巧,这些东西都发布在/css/...