js prototype 使用,new 对象的时候 属性怎么获取

js prototype 使用,new 对象的时候 属性怎么获取,第1张

$("#btn")on('click', person2printName);

最后一个位置传的应该是参数吧

PersonprototypeprintName = function () {

alert(thisname);

}

还有thisname你定义参数了吗

对象[变量]

比如obj是一个对象,它有个属性是name:

var

x

=

"name";

var

n

=

obj[x];

//获取属性值

obj[x]

=

"XXX";

//设置属性值

补充说明:对象属性的使用有两种方式:

objname

obj["name"]

第二种方式的属性名是个字符串,这就为变量的使用制造了可能性。

判断JS对象是否拥有某属性的方法:

1、in 运算符

var obj = {name:'jack'};

alert('name' in obj); // --> true

alert('toString' in obj); // --> true

可看到无论是name,还是原形链上的toString,都能检测到返回true。

2、hasOwnProperty 方法

var obj = {name:'jack'};

objhasOwnProperty('name'); // --> true

objhasOwnProperty('toString'); // --> false

原型链上继承过来的属性无法通过hasOwnProperty检测到,返回false。

需注意的是,虽然in能检测到原型链的属性,但for in通常却不行。

当然重写原型后for in在IE9/Firefox/Safari/Chrome/Opera下是可见的。

如果是使用了  JQ  EXTJS 的话本身就有 对象克隆的 函数库可以使用  如 extjs 使用

extuxutilclone()

没有用这些的话 可以自己写一个 克隆函数  网上有资源  比如

function deepClone(obj){    var result={},oClass=isClass(obj);

    // if(oClass==="Object"){

    //     result={};

    // }else if(oClass==="Array"){

    //     result=[];

    // }else{

    //     return obj;

    // }

    for(key in obj){

        var copy=obj[key];

        if(isClass(copy)=="Object"){

            result[key]=argumentscallee(copy);

        }else if(isClass(copy)=="Array"){

            result[key]=argumentscallee(copy);

        }else{

            result[key]=obj[key];

        }

    }

    return result;

}

function isClass(o){

    if(o===null) return "Null";

    if(o===undefined) return "Undefined";

    return ObjectprototypetoStringcall(o)slice(8,-1);

}

或者参考 extjs 的方法

 function(o) {  

   if(!o || 'object' !== typeof o) {        return o;    }   

    if('function' === typeof oclone) {        return oclone();    }   

     var c = '[object array]' === objectprototypetostringcall(o)  [] : {};

     var p, v;    

     for(p in o) {       

      if(ohasownproperty(p)) {            v = o[p];           

      if(v && 'object' === typeof v) {               

       c[p] = extuxutilclone(v);          

         }     else {          

               c[p] = v;          

           }        

           }   

            }  

        return c;};

具体代码如下所示:

1、<script>   //----------------for用来遍历数组对象;

2、 var i,myArr = [1,2,3];   for (var i = 0; i < myArrlength; i++) {    consolelog(i+":"+myArr[i]);   };

3、 //---------for-in 用来遍历非数组对象   var man ={hands:2,legs:2,heads:1};   //为所有的对象添加clone方法,即给内置原型(object,Array,function)增加原型属性,该方法很强大,也很危险   if(typeof Objectprototypeclone ==="undefined"){    Objectprototypeclone = function(){};    } ;

4、  //   for(var i in man){    if (manhasOwnProperty(i)) { //filter,只输出man的私有属性     consolelog(i,":",man[i]);    };   }  ;

5、//输出结果为print hands:2,legs:2,heads:1   for(var i in man) {//不使用过滤    consolelog(i,":",man[i]);   }   ;

6、 //输出结果为://hands : 2 indexhtml:20   //legs : 2 indexhtml:20   //heads : 1 indexhtml:20   //clone : function ;

7、for(var i in man) {    if(ObjectprototypehasOwnPropertycall(man,i)) { //过滤     consolelog(i,":",man[i]);    }   };

8、 //输出结果为print hands:2,legs:2,heads:1 </script>    。

javaScript遍历对象总结:

1、

2、

以上就是关于js prototype 使用,new 对象的时候 属性怎么获取全部的内容,包括:js prototype 使用,new 对象的时候 属性怎么获取、js 一个对象的属性名是一个变量如何设置和获取值、怎么判断JS对象是否拥有某属性等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9697338.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存