
$("#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对象是否拥有某属性等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)