日期:2014-05-16  浏览次数:20373 次

面向对象的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 "));