面向对象的JavaScript问题
var MyDom = new object();
MyDom.prototype.$ = function(e)
{
return document.getElementById(e);
}
var test = new MyDom();
alert(test.$( "00 "));
以上代码怎么写才是正确的?
------解决方案--------------------请学习 prototype 的用法 MyDom 是一个对象,不具有 prototype 属性
何况 你应该 var MyDom = new Object();注意大小写
应该如下写法
Object.prototype.$ = function(e)
{
return document.getElementById(e);
}
var test = new Object();
alert(test.$( "00 "));
------解决方案--------------------使用$()方法
$() 方法是在DOM中使用过于频繁的 document.getElementById() 方法的一个便利的简写,就像这个DOM方法一样,这个方法返回参数传入的id的那个元素。
比起DOM中的方法,这个更胜一筹。你可以传入多个id作为参数然后 $() 返回一个带有所有要求的元素的一个 Array 对象。
<HTML> <HEAD> <TITLE> Test Page </TITLE> <script src= "prototype-1.3.1.js "> </script> <script> function test1(){var d = $( 'myDiv ');alert(d.innerHTML);}function test2(){var divs = $( 'myDiv ', 'myOtherDiv ');for(i=0; i <divs.length; i++){alert(divs[i].innerHTML);}} </script> </HEAD> <BODY> <div id= "myDiv "> <p> This is a paragraph </p> </div> <div id= "myOtherDiv "> <p> This is another paragraph </p> </div> <input type= "button " value=Test1 onclick= "test1(); "> <br> <input type= "button " value=Test2 onclick= "test2(); "> <br> </BODY> </HTML> 下面的这个getObject方法和$符号是一样的意思:function getObject(elementId){ if (document.getElementById) { return document.getElementById(elementId); }else if(document.all) { return document.all[elementId]; }else if(document.layers) { return document.layers[elementId]; } }
------解决方案--------------------function MyDom()
{
}
MyDom.prototype =
{
$:function(e){
return document.getElementById(e);
}
}
定义一个新的对象原型时不能var定义,var MyDom这句实际上是已经创建一个对象实例,而不是原型,所以不能用new MyDom来创建一个对象~~要给对象添加属性时可以写成:
function MyDom(id){
this.id=id;
}
MyDom.prototype =
{
$:function(e){
return document.getElementById(this.id);
}
}
如果是定义一个对象实例,就可以直接引用,而无需要创建新的对象了,如:
var MyDom=new Object();
MyDom.$=function(e)
{
return document.getElementById(e);
}
alert(MyDom.$( "00 "));