2

Sencha Touch v2.3、ExtJS v4.1.0。

this新しいクラスを作成するとき、constructorメソッドから戻る必要があるのはなぜですか?

例 (以下のリンクから):

var Person = new Ext.Class({
    name: 'Mr. Unknown',

    constructor: function(name) {
        this.name = name;

        return this; // <-- HERE. Why????
    },

    walk: function(steps) {
        alert(this.name + ' is walking ' + steps + ' steps');
    }
});

var jacky = new Person('Jacky');
jacky.walk(10); // alerts "Jacky is walking 10 steps" 

http://www.sencha.com/learn/sencha-class-system

4

2 に答える 2

0

返すことは、キーワードをthis使用してオブジェクトを生成することとは異なります。newperson 関数によって返される は、this常に同じオブジェクトを参照します。ほとんどの場合、これはグローバル オブジェクトになりますが、他の関数と同様に、呼び出されるコンテキストに依存します。

たとえば、次のようにします。

   function person(name) {
        this.name = name;

        return this; 
    }

次の関数を呼び出して新しい人を作成するとしますthis

 var newPerson = person("Bob");

そして、あなたはそれをやり直します。

var evenNewerPerson = person("Frank");

newPerson.name === "Frank" => true 
evenNewerPerson === newPerson => true

したがって、同じオブジェクトを指しています。一方、newキーワードを使用すると、まったく新しいオブジェクトが作成されます。

var somePerson = new Person("Sue");
var otherPerson = new Person("Sally");

somePerson === otherPerson => false   
于 2015-10-02T14:50:38.157 に答える