Javascript 构造函数中定义的属性是自己的还是继承的?
我是Javascript新手,如果这听起来是个简单的问题,我很抱歉。 如果我有以下构造函数:Javascript 构造函数中定义的属性是自己的还是继承的?,javascript,Javascript,我是Javascript新手,如果这听起来是个简单的问题,我很抱歉。 如果我有以下构造函数: function Person(x,y){ this.name = x; this.surname = y; } 我很好奇属性名称和姓氏是否被视为个人类型对象的自有属性或继承属性 e、 g 我使用hasOwnProperty做了一些测试,这表明它们被认为是自己的属性而不是继承的,只是想验证一下。是的,它们是自己的属性。当使用新人物实例化对象时,将创建一个对象,调用函数人物,并且人物中的此引用此新
function Person(x,y){
this.name = x;
this.surname = y;
}
我很好奇属性名称
和姓氏
是否被视为个人
类型对象的自有属性或继承属性
e、 g
我使用hasOwnProperty
做了一些测试,这表明它们被认为是自己的属性而不是继承的,只是想验证一下。是的,它们是自己的属性。当使用新人物
实例化对象时,将创建一个对象,调用函数人物
,并且人物
中的此
引用此新对象。然后直接显式设置此对象的属性。本质上,与此无异:
function person(obj) {
obj.name = 'Foo';
obj.surname = 'Bar';
}
var o = {};
person(o);
o.name // Foo
是的,它们是自己的财产。当使用新人物
实例化对象时,将创建一个对象,调用函数人物
,并且人物
中的此
引用此新对象。然后直接显式设置此对象的属性。本质上,与此无异:
function person(obj) {
obj.name = 'Foo';
obj.surname = 'Bar';
}
var o = {};
person(o);
o.name // Foo
最简单的检查方法就是试试看 但是是的,它们被认为是自己的财产。在构造函数中,
这个
是对新构造的对象的引用(当用new
调用Person
时)
这基本上和做同样的事情
var x={};
x、 name='foo'
console.log(x.hasOwnProperty('name'));//真的
要检查这一点,最简单的方法就是试试看
但是是的,它们被认为是自己的财产。在构造函数中,这个
是对新构造的对象的引用(当用new
调用Person
时)
这基本上和做同样的事情
var x={};
x、 name='foo'
console.log(x.hasOwnProperty('name'));//true
但如果我通过prototype定义属性,那么它会被认为是继承的吗?(例如Person.prototype.age=9)Person.prototype上的内容,不是直接设置在构造函数中的上,而是在Person
的所有实例中继承和共享的。构造函数函数中的内容也是共享的,例如,如果您硬编码并为属性分配一些值,但我明白了,这是函数构造函数和原型之间的区别。你必须给出一些具体的例子,说明你认为构造函数中的某些东西是共享的;一般来说不是。是的,但每个实例都有自己的值版本。尝试分配一个数组(this.foo=[]
),然后对其进行变异(o.foo.push('bar')
)。使用构造器和原型试试这个。使用这两种技术实例化一组对象。现在你们可以看到什么是共享的,什么不是。但若我通过原型定义属性,那个么它被认为是继承的吗?(例如Person.prototype.age=9)Person.prototype上的内容,不是直接设置在构造函数中的上,而是在Person
的所有实例中继承和共享的。构造函数函数中的内容也是共享的,例如,如果您硬编码并为属性分配一些值,但我明白了,这是函数构造函数和原型之间的区别。你必须给出一些具体的例子,说明你认为构造函数中的某些东西是共享的;一般来说不是。是的,但每个实例都有自己的值版本。尝试分配一个数组(this.foo=[]
),然后对其进行变异(o.foo.push('bar')
)。使用构造器和原型试试这个。使用这两种技术实例化一组对象。现在你看到什么是共享的,什么不是。