日期:2014-05-16 浏览次数:20368 次
?
function logs(str){document.write(str+"<br />")} //利用“this 指向函数调用者”的特性,可以实现链式调用。jQuery 中大部分都是链式调 var oName = {name : "aa",age:999}; window.name = "I am window"; function showName(){ logs(this.name); } oName.show = showName; window.show = showName; oName.show(); /* a */ window.show(); /* I am window */ //eg. 链式调用 模仿c++的 cout 输出函数cout<<aa<<bb<<cc<<endl; oName.showName = function(){ logs(this.name); return this;// JavaScript 中的“this”是函数上下文,不是在声明时决定的,而是在调用时决定的 }; oName.showAge = function(){ logs(this.age); return this; } oName.showName().showAge();// aa 999 //方法 静态方法 实例方法 java 中的一样的特性 实例方法必须声明对象,对象才可以调用 function staticClass(){}; //声明一个类 staticClass.staticMethod = function(){ logs("static method")}; //创建一个静态方法 staticClass.prototype.instanceMethod = function(){ logs("instance method")} //创建一个实例方法 staticClass.staticMethod(); //staticClass.instanceMethod(); //语句错误, 无法运行 new staticClass().instanceMethod(); //必须进行实例化才可以调用 //动态原型方法的精髓在于使用 prototype 声明实例方法,使用 this 声明实例属性 function Car(){ this.color = "none"; //实例实属 if( typeof Car._initialized == "undefined"){ Car.prototype.showCar = function(){ //实例方法 logs(this.color); } } Car._initialized = true; //静态属性 ? 实例属性? } logs(Car.color); //undefined logs(Car._initialized); //undefined ? var car = new Car(); logs(car.color); //none logs(Car._initialized); //true ? logs(car._initialized);//undefined ? car.showCar(); //none //* Car._initialized是静态属性 1处报错,是因为你的Car._initialized属性的赋值是在类里面,JS是解释到哪儿执行到哪儿, 正因为如此,当有Car的实力产生的时候,静态属性_initialized被赋值, 所以2处为true,3处不输出是因为它是静态属性,不是实例属性。*/
//了解DOM function onLoad(){ var oHtml = document.documentElement; //获取都HTML对新 var oBody = oHtml.lastChild; //获取到 body 对象 oHtml.firstChild;获取的是 head对象 var oDiv = document.createElement("div");//创建div对象 var oText = document.createTextNode("Hello DOM");//创建一个文本节点 oDiv.appendChild(oText); //将文本节点放到 div 对象中 oBody.appendChild(oDiv); //将div对象(带有文件节点)放到body对象中 } //动态语音 -------eval var sJson = "{name:'ziqiu.zhang'}"; eval("var oName="+sJson); // eval()方法可以将 JSON 格式的字符转化为 JavaScript 对象 logs(oName.name); logs(eval("5+2")); //输出“7”