Javascript+;角度+;原型清除对象属性
我有点困惑,我希望有一个函数,可以清除对象的所有属性,该属性可用于对象的所有实例。因此,我添加了一个原型clear()函数。这是以下代码:Javascript+;角度+;原型清除对象属性,javascript,angularjs,Javascript,Angularjs,我有点困惑,我希望有一个函数,可以清除对象的所有属性,该属性可用于对象的所有实例。因此,我添加了一个原型clear()函数。这是以下代码: (function () { Supplier.$inject = []; angular.module('webclient').factory('Supplier', Supplier); function Supplier() { Supplier.prototype = { clear: function () {
(function () {
Supplier.$inject = [];
angular.module('webclient').factory('Supplier', Supplier);
function Supplier() {
Supplier.prototype = {
clear: function () {
for (var key in this) {
//skip loop if the property is from prototype
if (this.hasOwnProperty(key))
continue;
console.log("key:" + key);
this[key] = undefined;
}
},
}
return Supplier;
};
})();
因此,我希望能够清除当前供应商对象的所有属性。因此,如果供应商对象具有以下属性:
供应商编号:21,
电子邮件:无
我想将属性设置为未定义。我将按如下方式使用该类:
var供应商=新供应商()
supplier.SupplierID=21;
supplier.Email=“无”
若要将每个属性设置为未定义,我将
supplier.clear()
有什么想法吗
谢谢不要将属性设置为
未定义
,只需删除()
delete this[key];
而且@jcubic是正确的,hasOwnProperty
如果原型中的键不在中,则返回true…hasOwnProperty如果原型中的键不在,则返回true。原型也应该在构造函数之外设置,因此您的代码应该如下所示:
function Supplier() { }
Supplier.prototype = {
clear: function () {
for (var key in this) {
if (this.hasOwnProperty(key)) {
console.log("key:" + key);
this[key] = undefined;
}
}
},
}
试试这个:()
function Supplier() {
var supplier = function() {};
supplier.prototype.clear = function() {
for (var key in this) {
if (!this.hasOwnProperty(key))
continue;
delete this[key];
}
};
return supplier;
}