Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何向原型添加属性(javascript)_Javascript_Oop - Fatal编程技术网

如何向原型添加属性(javascript)

如何向原型添加属性(javascript),javascript,oop,Javascript,Oop,以下函数Phone()创建一个原型并Phone.prototype.screenSize=6添加screenSize属性 function Phone() { this.operatingSystem = 'Android'; } Phone.prototype.screenSize = 6; 然后,如果我们创建了一个新对象myPhone,并检查它是否包含screenSize属性,它将返回false,尽管该属性是在创建对象之前添加的 const myPhone = new Phone()

以下函数
Phone()
创建一个原型并
Phone.prototype.screenSize=6
添加
screenSize
属性

function Phone() {
  this.operatingSystem = 'Android';
}

Phone.prototype.screenSize = 6;
然后,如果我们创建了一个新对象
myPhone
,并检查它是否包含
screenSize
属性,它将返回false,尽管该属性是在创建对象之前添加的

const myPhone = new Phone();

const inherited = myPhone.hasOwnProperty('screenSize');

console.log(inherited);
// false

为什么不返回true以及如何使其返回true

向原型添加属性类型只会向原型添加“own”属性,而不会向实例添加属性

Phone.prototype.screenSize = 6;
Phone.prototype.hasOwnProperty('screenSize'); // true


const myPhone = new Phone();
myPhone.hasOwnProperty('screenSize'); // false
// instances will not own the property.
为什么
hasOwnProperty
不返回true

因为它不是
myPhone
自己的属性,所以它是从prototype对象继承的


如何检查原型链


使用操作符中的

“它为什么不返回true”
hasOwnProperty
检查对象,而不是原型链。如何检查原型链?它不是新对象的属性,而是原型的属性。“如何使其返回true”您的目标是什么?是否要确保
hasOwnProperty
返回true?然后需要将属性附加到实例。是否要验证该属性是否存在?然后使用。这似乎有点像,<代码>屏幕大小
不是像
操作系统
一样成为链条的一部分吗@弗拉兹