"Object.call"是什么意思?

DrS*_*ove 7 javascript oop

function bb_graphics_GraphicsContext(){
    Object.call(this);
    this.bbdevice=null;
    this.bbmatrixSp=0;
    this.bbix=1.000000;
    this.bbiy=0;
    this.bbjx=0;
    this.bbjy=1.000000;
    this.bbtx=0;
    this.bbty=0;
    this.bbtformed=0;
    this.bbmatDirty=0;
    this.bbcolor_r=0;
    this.bbcolor_g=0;
    this.bbcolor_b=0;
    this.bbalpha=0;
    this.bbblend=0;
    this.bbscissor_x=0;
    this.bbscissor_y=0;
    this.bbscissor_width=0;
    this.bbscissor_height=0;
    this.bbmatrixStack=new_number_array(192);
}
Run Code Online (Sandbox Code Playgroud)

什么Object.call(this)意思?

Pau*_*uno 10

JavaScript中的函数是完整的对象.当它们作为参数传递给另一个函数时,它们也不会保留它们的范围.那么,在下面的代码中......

var obj1 = {
    property1: "blah",
    method1: function () {
        alert(this.property1);
        // do stuff
    }
 };

 function func1 (passedFunction) {
     passedFunction();
     // do other stuff
 }

 func1(obj1.method1);
Run Code Online (Sandbox Code Playgroud)

... func1会调用obj1.method1,但它不会alertobj1's 的值property1,因为我们所做的只是传递函数对象,而不是它的this上下文.这就是callapply进来,他们让你注入范围,讲的意思是什么功能this会.以下示例有效:

var obj1 = {
    property1: "blah",
    method1: function () {
        alert(this.property1);
        // do stuff
    }
 };

 function func1 (passedObject, passedFunction) {
     passedFunction.call(passedObject);
     // do other stuff
 }

 func1(ob1, obj1.method1);
Run Code Online (Sandbox Code Playgroud)

现在,我们obj1.method1通过调用强制或明确地告诉它的上下文是什么call,并将它用作传递给它的对象this.

call并且apply几乎完全相同,除了它们如何处理被调用函数的附加参数.有关更多信息,请参阅MDN上的这些文章:call,applyFunction.

所有这些都被说bb_graphics_GraphicsContext成了,是一个构造函数.(您可能已经猜到了.)您可以使用new关键字来调用它var obj1 = new bb_graphics_GraphicsContext();.当它到达功能的第1行,它需要的this对象,并调用通用Object的构造,明确地注入新的对象this(在bb_graphics_GraphicsContext构造函数)作为this所述的Object构造.我假设这个函数/构造函数的编写者这样做是为了确保新创建的对象bb_graphics_GraphicsContext获取基础的所有基本方法Object.但我不知道为什么这是必要的,就好像你bb_graphics_GraphicsContextnew关键字调用它会自然地抓住所有这些属性.


Tom*_*rdt -2

每个 JavaScript 函数都有一个toString(),call()apply()

在odetocode.com 文章中了解有关它们的更多信息

  • 我知道。我想知道在这种情况下会发生什么。这个关键词指的是什么??调用之后会发生什么 - Object.call(this); (3认同)