我想用一种较严格的风格写js脚本,于是首先想到用C模拟C++的面向过程写法(即第一参数为this指针)。
<!-- helloworld.html -->
<script>
function Person() {};
Person.prototype.name = "";
Person.prototype.gender = "man";
var Person_setName = function(person, name) {
person.name = name;
};
var Person_getName = function(person) {
return person.name;
};
var Person_say = function(person, str) {
console.log("[name = " + Person_getName(person) + ", gender = " + person.gender + "]: " + str);
};
var person = new Person();
var person2 = new Person();
Person_setName(person, "person");
Person_setName(person2, "person2");
person2.gender = "woman";
Person_say(person, "Hello, world!");
Person_say(person2, "Goodbye, world!");
</script>
有点像lua的写法,无法实现继承、封装、多态这三项面向对象特性,只是一种命名上的约定。这样写或许更容易让Aptana做语法提示。