new绑定后,this指向新创建的对象本身,自有属性是直接赋值给this的属性,优先于原型属性且可用hasOwnProperty验证;构造函数显式返回非null对象时,会覆盖默认返回的this。

new 绑定后的实例,其自有属性和 this 不是并列关系,而是归属关系:自有属性是写在 this 上的属性,this 是那个新创建的对象本身。
自有属性就是 this 上直接赋值的属性
执行 new Constructor() 时,构造函数内部所有 this.xxx = value 的操作,都会把属性直接添加到新对象上——这些就是自有属性。它们不属于原型,也不从原型链继承,只属于当前实例。
-
this.name = '张三'→ 实例上立刻拥有自有属性name -
this.say = function() {}→say是方法,也是自有属性(不是原型上的) - 即使原型上也有同名属性(如
Constructor.prototype.name = '李四'),自有属性会优先被访问,覆盖原型属性
this 指向的是整个新对象,不是某个属性
this 在构造函数内代表那个刚被创建出来的空对象(之后被填充属性)。它不是一个“属性”,而是一个引用该实例的上下文对象。你可以把它理解为“当前正在构建的这个东西”。
- 你不能说 “this 是一个属性”,它是一个运行时绑定的值,类型是对象
- 所有对
this.xxx的赋值,本质是在往这个对象身上添加自有属性 - 打印
this看到的是整个对象,比如{ name: '张三', age: 25 },而this.name只是其中的一个字段
怎么验证某个属性是不是自有属性?
可以用 hasOwnProperty 方法判断:
-
inst.hasOwnProperty('name')返回true→ 是自有属性 -
inst.hasOwnProperty('toString')通常返回false→ 来自Object.prototype,不是自有属性 -
inst.name能读取,不代表一定是自有属性(可能来自原型),但hasOwnProperty才是权威判断依据
构造函数返回值会影响 this 的结果吗?
一般不影响 this 的绑定过程,但会影响最终返回的对象:
- 构造函数默认返回 this(即那个新对象)
- 如果显式
return一个非 null 对象,new 表达式会丢弃原本的 this,直接返回你 return 的对象 - 此时该返回对象不经过 new 的原型链设置(
__proto__不指向Constructor.prototype),也不含构造函数里对 this 的赋值

















