调用和应用示例可以在这样的代码中表现?

时间:2017-09-02 12:47:30

标签: javascript call apply

我可以理解为什么要在下面的例子中使用call和apply:

myObject = { name: "shafizzle",
 sayName: function() { console.log(this.name) } 
};
myObject.sayName ();

anotherObject = { name: "not me" }

myObject.sayName.call (anotherObject); // It will print "not me" as its called with anotherObject

但是

如果我想打印"不是我"然后我可以直接在anotherObject中创建sayName并直接调用它:

anotherObject = { name: "not me ",
 sayName: function() { console.log(this.name) } 
};
anotherObject .sayName ();

所以我只是想知道是否存在通过不在多个对象中编写相同的函数或使用调用的任何其他优点/目的来节省内存的任何概念?

谢谢!

1 个答案:

答案 0 :(得分:0)

你必须在JS中模拟OOP才能达到你想要的效果。 使用原型链创建一个类,然后您只需实例化它。 即:

function MyClass(name) {
   this._name = name;
   console.log("Hello, I am " + this._name);
}

MyClass.prototype._name; // Stores the name

MyClass.prototype.sayName = function() {
   console.log("I say: " + this._name);
}

var object1 = new MyClass("Johnny");
var object2 = new MyClass("Mary");

object1.sayName(); // Will output: I am Johnny
object2.sayName(); // Will output: I am Mary