こんにちは、私は本からコーヒースクリプトを学んでいます。コーヒースクリプトpdfのマークベイツプログラミング両方が同じ実装をしているように見えますが、JavaScriptの動作に頭を悩ませています。
例-1
class Employee
constructor: (@attributes)->
for key, value of @attributes
@[key] = value
printInfo: ->
alert "Name: #{@name}"
emp1 = new Employee
name: "Mark"
printInfo: ->
alert "Hacked ur code !"
emp1.printInfo()
対応するJavaScript
var Emp, Employee, emp1, emp2;
Employee = (function() {
function Employee(attributes) {
var key, value, _ref;
this.attributes = attributes;
_ref = this.attributes;
for (key in _ref) {
value = _ref[key];
this[key] = value;
}
}
Employee.prototype.printInfo = function() {
return alert("Name: " + this.name);
};
return Employee;
})();
emp1 = new Employee({
name: "Mark",
printInfo: function() {
return alert("Hacked ur code !");
}
});
emp1.printInfo();
これは「ハッキングされたurコード!」を警告します
例-2
class Emp
constructor: (@attributes)->
printInfo: ->
alert "Name: #{@attributes.name}"
emp2 = new Emp
name: "Mark"
printInfo: ->
alert "Hacked ur code"
emp2.printInfo()
対応するJavaScript
Emp = (function() {
function Emp(attributes) {
this.attributes = attributes;
}
Emp.prototype.printInfo = function() {
return alert("Name: " + this.attributes.name);
};
return Emp;
})();
emp2 = new Emp({
name: "Mark",
printInfo: function() {
return alert("Hacked ur code");
}
});
emp2.printInfo();
これは「名前:マーク」に警告します
違いはどこにありますか?