ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
**Object.keys()** **for...in** **Object.getOwnPropertyNames()** ~~~ var testObj = Object.create({}, { getFoo: { value: function () { return this.foo; }, enumerable: false } }); testObj.name = "shangguan"; testObj.age = 25; testObj.action = function(){ return this.name; }; var keys= Object.keys(testObj); console.log(keys); var keys =[]; for(var i in testObj){ keys.push(i); } console.log(keys); var keys = Object.getOwnPropertyNames(testObj); console.log(keys); ~~~ 所有继承了 Object 的对象都会继承到 `hasOwnProperty` 方法。这个方法可以用来检测一个对象是否含有特定的自身属性;和 in 运算符不同,该方法会忽略掉那些从原型链上继承到的属性。 ### 使用 `hasOwnProperty` 方法判断属自身属性与继承属性 ~~~ function Demo(name){ this.name=name||'Tom';//自身属性 } Demo.prototype.age='10'; var demo=new Demo('lilei');                //原型链的,非私有的属性 console.log(demo.hasOwnProperty('age'));//false console.log(demo.hasOwnProperty('toString'));// 返回 false //自身属性 console.log(demo.hasOwnProperty(name));//true ~~~