虽然这说是Dojo的编程规范,但实际上大部分都是普遍应用的规范,所以就当是JavaScript的编程规范转载过来了 前言 相当不错的 Javascript 编程风格规范,建议大家采用此规范编写 Javascript。原文链接: http://dojotoolkit.org/developer/StyleGuide 。 翻译(Translated by):i.feelinglucky{at}gmail.com from http://www.gracecode.com ,转载请注明出处、作者和翻译者,谢谢配合。 本文地址: http://code.google.com/p/grace/wiki/DojoStyle 。 序 Any violation to this guide is allowed if it enhances readability. 所有的代码都要变成可供他人容易阅读的。 快读参考 核心 API 请使用下面的风格: 结构 规则 注释 模块 小写 不要使用多重语义(Never multiple words) 类 骆驼 … Continue reading →
跨浏览器通信 建立跨浏览器通信有两个前提条件 两个窗口都包含来自同一个域的页面; 其中一个窗口包含对另一个窗口的引用。 第一个条件是JavaScript同源策略的结果,保护用户的隐私,第二个条件是为了使一个窗口知道另一个窗口的存在。实现通信主要是涉及到window对象的name和opener属性,以及open()方法。 window.name属性的作用是为HTML链接的target属性作引导的,同时它也可以引导弹出窗口。它的默认值为空,但可以设置的。 window.name = “endlesscode”; 点击带有此target的链接,比如<a href=”somepage.html” target=”endlesscode”>,该链接就会在window.name为”endlesscode”的窗口打开。另外,也可以在window.open()方法中使用name,例如: window.open(“somepage.html”, “endlesscode”, [arguments]); 这样浏览器就会查找名字叫做”endlesscode”的窗口。如果它找到一个,somepage.html就会在这个窗口打开。如果没有找到,就找开一个新窗口,并将name命名为”endlesscode”。其实像wp的预览、优酷的视频观看页面以及卓越的书目录页面都是使用这种方式在同一个页面打开的。 window.opener属性是弹出窗口指回主窗口的引用,如果新页面被载入到弹出窗口中(如果用户点击了一个链接),opener属性仍旧可用。如果新页面是载入到主窗口中,则可以通过在弹出窗口中 opener.ST_newWindow = window; 来在主窗口中保存弹出窗口的引用。
有这张图就够了,简单地说明一下 以Height为例,Width同理: div.clientHeight:可见窗口除去了margin+border之后的长度。 div.offsetHeight:在div.clientHeight的基础上加了border和滚动条的长度。 div.scrollHeight:就是元素内容的实际高度。
Function.__proto__指向Function.prototype,这导致: Function.constructor === Function Function instanceof Function == true 即Function是它自己的构造器。 Object.__proto__指向Function.prototype,即Object也是Function构造的实例,因此有: Object instanceof Function == true 同时也等价于: Object.constructor === Function 而Function.prototype.__proto__又是指向Object.prototype,即Function.prototype是Object构造的实例,因此有: Function instanceof Object == true Object instanceof Object == true Foo.__proto__指向了Function.prototype,可以看到自定义的函数Foo其实就是Function的一个实例: Foo instanceof Function == true 参考: JavaScript Object … Continue reading →
原型的含义是指:如果构造器有个原型对象A,则由该构造器创建的实例(Object Instance)都必然复制于A。““在JavaScript中,对象实例(Object Instance)并没有原型,而构造器(Constructor)有原型,属性’<构造器>.prototype’指向原型。对象只有“构造自某个原型”的问题,并不存在“持有(或拥有)某个原型”的问题。””如何理解这一句话? 代码1: function myFunc() { var name = “stephenchan”; var age = 23; function code() { alert(“Hello World!”); }; } var obj = new myFunc(); //输出undefined,对象实例没有原型 alert(obj.prototype); //输出myFunc的函数代码,obj由myFunc构造出来的 alert(obj.constructor); //输出true alert(obj.constructor == myFunc); //输出[object Object],说明myFunc的原型是一个对象 alert(myFunc.prototype); //输出function Function() … Continue reading →