首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何基于此javascript代码访问此属性?

如何基于此javascript代码访问此属性?
EN

Stack Overflow用户
提问于 2018-09-25 07:01:55
回答 2查看 56关注 0票数 0

例如,假设我在浏览器的全局窗口中定义了以下构造函数。

function AccessProperty() {
  this.myName = "Chris";
}

现在我像这样执行这个函数:

new AccessProperty();

现在,根据我如何使用new关键字执行上面的函数,我如何才能访问this.myName属性,而不添加如下内容:

var acccess = new AccessProperty();
EN

回答 2

Stack Overflow用户

发布于 2018-09-25 07:33:44

真的不清楚你的最终目标是什么。this是一个上下文引用,它根据函数的上下文而变化。当您使用new时,this引用js系统为您创建的对象,并返回给调用者。如果没有new,这将是全局窗口,如果您只调用该函数。

您可以使用像call()这样的函数显式地告诉函数this是什么

function AccessProperty() {
    this.myName = "Chris";
  }

let someObject = {}
AccessProperty.call(someObject)   // this will be someObject
console.log(someObject.myName)    // to which the function adds myName.

但是,当您可以只使用new并获得一个具有myName属性的对象时,这似乎是一种很难做的事情。

为了演示this的动态特性,请考虑下面的代码:

function AccessProperty() {
  this.myName = "Chris";
}

let o = {
  set: AccessProperty,
  talk() {console.log(this.myName)}
}
// because of the way it's called `this` in
// the function AccessProperty will be
// the object o 
o.set()   
o.talk()
console.log(o) // o now has a myName property

这种行为在某些情况下非常有用,如果你不想要这种行为,你可以使用this,你可以只定义变量。

票数 1
EN

Stack Overflow用户

发布于 2018-09-25 07:14:11

如果你不是在严格模式下,你可以这样做

function AccessProperty(){
 this.name="ram"
}

function parent(){
  AccessProperty.bind(this)
  AccessProperty()
  console.log(this.name)
}


parent()

这里我们将AccessProperty函数的作用域绑定到父函数的作用域。完成此操作后,名称将位于父函数的作用域中

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52488444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档