Javascript 在构造函数对象中访问它

Javascript 在构造函数对象中访问它,javascript,Javascript,我试图在原型构造函数中访问这个(我想这就是它的名称?) 但是这个等于窗口。所以我试着做了bind(SomethingUseful),当我在mouseDownHandler中执行this时,整个函数以纯文本的形式注销,所以我不能在实际的mouseDownHandler函数中使用中的内容 在构造函数函数中访问这个的一些有用的的正确方法是什么(同样,我可能把名字弄错了,如果我弄错了,请更正,或者在注释中告诉我) 而不是这样做:this.mouseDownHandler=mouseDownHander.

我试图在
原型构造函数中访问
这个
(我想这就是它的名称?)

但是
这个
等于
窗口
。所以我试着做了
bind(SomethingUseful)
,当我在
mouseDownHandler
中执行
this
时,整个函数以纯文本的形式注销,所以我不能在实际的
mouseDownHandler
函数中使用
中的内容

构造函数
函数中访问
这个
一些有用的
的正确方法是什么(同样,我可能把名字弄错了,如果我弄错了,请更正,或者在注释中告诉我)

而不是这样做:
this.mouseDownHandler=mouseDownHander.bind(this)我想把它添加到
SomethingUseful.prototype={

这是不可能的。在您尝试将函数绑定到实例时,没有可以将函数绑定到的实例。只有在调用构造函数时或之后,才会有一个实例将函数绑定到

换言之:你正在试图在比萨饼送到之前吃掉它


相关的:

而不是这样做:
this.mouseDownHander=mouseDownHander.bind(this);
我想把它添加到
SomethingUseful.prototype={

这是不可能的。在您尝试将函数绑定到实例时,没有可以将函数绑定到的实例。只有在调用构造函数时或之后,才会有一个实例将函数绑定到

换言之:你正在试图在比萨饼送到之前吃掉它



相关:

对于对象定义,
用于声明“实例属性”,这些属性的值可能因实例而异

通常,对于存储函数的属性(也称为方法),该功能不会因实例而异,因此这些属性通常是在对象的原型上创建的,因此每个实例不必存储与其他每个实例完全相同的功能

当设计一个对象以在以后创建它的实例时,我们声明一个函数,而不是一个对象文本,因为您不能调用一个对象

//这被称为“构造函数”,因为它是
//用于生成(构造)对象,然后
//绑定到实例变量:
函数SomethingUseful(){
//这是一个作用域为函数的正则变量
//以后实例将无法访问它。
var a=10;
//由于“this”这个词,它成为“实例属性”
//每一个有用的实例都会有
//将以默认值20开始,但每个实例
//可以更改该值,但不会影响任何其他实例
this.someProperty=20;
}
//方法没有在构造函数中设置(因此它们不会成为
//实例属性),而是在构造函数的
//原型并继承到每个实例中。所有实例共享
//同一个原型:
SomethingUseful.prototype.somethod=函数(){
//即使此方法未与每个实例一起存储,它也会
//可以使用“this”访问当前实例
归还此.someProperty;
};
//通过调用构造器函数,使某事物的实例变得有用
//返回对象实例。这些实例存储在不同的
//变量,这就是我们保持实例彼此独立的方式
var obj1=newsomethinguseful();
var obj2=newsomethinguseful();
//现在我们已经使用构造函数来创建实例,
//我们可以询问这些实例使用了什么函数来创建它们:
console.log(“存储在obj1中的对象是用:“+obj1.constructor.name”构造的);
//检查obj1:
log(“obj1.someProperty为:”+obj1.someProperty);
obj1.someProperty=50;
log(“obj1.someProperty已更改,现在为:”+obj1.someProperty)
log(“obj1.someMethod返回:”+obj1.someMethod());
//检查obj2:
log(“obj2.someProperty为:”+obj2.someProperty);

console.log(“obj2.someMethod返回:”+obj2.someMethod());
当涉及到对象定义时,
用于声明“实例属性”,这些属性的值可能因实例而异

通常,对于存储函数的属性(也称为方法),该功能不会因实例而异,因此这些属性通常是在对象的原型上创建的,因此每个实例不必存储与其他每个实例完全相同的功能

当设计一个对象以在以后创建它的实例时,我们声明一个函数,而不是一个对象文本,因为您不能调用一个对象

//这被称为“构造函数”,因为它是
//用于生成(构造)对象,然后
//绑定到实例变量:
函数SomethingUseful(){
//这是一个作用域为函数的正则变量
//以后实例将无法访问它。
var a=10;
//由于“this”这个词,它成为“实例属性”
//每一个有用的实例都会有
//将以默认值20开始,但每个实例
//可以更改该值,但不会影响任何其他实例
this.someProperty=20;
}
//方法没有在构造函数中设置(因此它们不会成为
//实例属性),而是在构造函数的
//原型并继承到每个实例中。所有实例共享
//同一个原型:
SomethingUseful.prototype.somethod=函数(){
//即使此方法未与每个实例一起存储,它也会
//可以使用“this”访问当前实例
返回此.someProperty
SomethingUseful.prototype = {
    constructor: SomethingUseful,
    init: init,
    someFunction: someFunction,
    mouseDownHandler: mouseDownHander.bind(this)
}