declare:定義
assign:指派,分配
functionbody:函數體(就是函數的內容)
object:對象
property:屬性
unnamed:匿名(在這裏沒翻譯成未命名)
object oriented programming:面相對相編程
class:類(比如後面的class data type我翻譯成類數據類型)
pointer:指針
reassign:重新分配
nest:嵌套
feature:功能,特性
local/global:局部/全局
blueprint:藍圖(?)
user defined:用戶自定義
instance:實例
prototype:原型(除了標題都不翻譯)
internal:內部
constructor:構造器
duplication:
functionName([parameters]){functionBody};
function add(a, b)
{
return a+b;
}
alert(add(1,2)); // 結果 3
var add=function(a, b)
{
return a+b;
}
alert(add(1,2)); // 結果 3
var add=function theAdd(a, b)
{
return a+b;
}
alert(add(1,2)); // 結果 3
alert(theAdd(1,2)); // 結果也是 3
var myObject=new Object();
myObject.add=function(a,b){return a+b};
// myObject 現在有一個叫做“add”的屬性(或方法)
// 而且我能夠象下面這樣使用它
myObject.add(1, 2);
varName=new Function([param1Name, param2Name,...paramNName], functionBody);
var add=new Function("a", "b", "return a+b;");
alert(add(3,4)); // 結果 7
var add=new Function("a", "b",
"alert" + // 注意 "+"
"('adding '+a+' and ' +b);\ // 和 "\"的不同用法
return a+b;");
alert(add(3,4)); // 結果 7
{
return new Function("a", "b", "return a" + myOperator + "b;");
}
var subtract=createMyFunction("-"); // 創建函數 "subtract"
var multiply=createMyFunction("*"); // 創建函數 "multiply"
// test the functions
alert("加的結果="+add(10,2)); // 結果是 12
alert("減的結果="+subtract(10,2)); // 結果是 8
alert("乘的結果="+multiply(10,2)); // 結果是 20
alert(add);
function Ball() // 也許看起來有點奇怪,但是這個聲明
{ // 創建了一個叫做Ball的對象
i=1;
}
alert(typeof Ball); // 結果 "function"
function Ball() // 也許看起來有點奇怪,但是這個聲明
{ // 創建了一個叫做Ball的對象,而且你能夠
} // 引用它或者象下面那樣給它增加屬性
Ball.callsign="The Ball"; // 給Ball增加屬性
alert(Ball.callsign); // 輸出 "The Ball"
function myFunction(message)
{
alert(message);
}
var ptr=myFunction; // ptr指向了myFunction
ptr("hello"); // 這句會執行myFunction:輸出"hello"
function sayName(name)
{
alert(name);
}
var object1=new Object(); // 創建三個對象
var object2=new Object();
var object3=new Object();
object1.sayMyName=sayName; // 將這個函數指派給所有對象
object2.sayMyName=sayName;
object3.sayMyName=sayName;
object1.sayMyName("object1"); // 輸出 "object1"
object2.sayMyName("object2"); // 輸出 "object2"
object3.sayMyName("object3"); // 輸出 "object3"
{
alert(myFunction.message);
}
myFunction.message="old";
var ptr1=myFunction; // ptr1 指向 myFunction
var ptr2=myFunction; // ptr2 也指向 myFunction
ptr2(); // 輸出 "old"
ptr2(); // 輸出 "new"
function myFunction()
{
alert("Old");
}
myFunction(); // 輸出 "Old"
myFunction=function()
{
alert("New");
};
myFunction(); // 輸出 "New"
function myFunction()
{
alert("Old");
}
var savedFuncion=myFunction;
myFunction=function()
{
alert("New");
};
myFunction(); // 輸出 "New"
savedFuncion(); // 輸出 "Old"
function myFunction()
{
alert("Old");
}
var savedFunc=myFunction;
savedFunc=function()
{
alert("New");
};
myFunction(); // 輸出 "Old"
savedFunc(); // 輸出 "New"
{
function calculate(number)
{
return number/2;
}
result+=calculate(num1)+" ";
result+=calculate(num2)+" ";
result+=calculate(num3);
}
var resultString=getHalfOf(10,20,30);
alert(resultString); // 輸出 "5 10 15"
{
return number/3;
}
{
function calculate(number)
{
return number/2;
}
result+=calculate(num1)+" ";
result+=calculate(num2)+" ";
result+=calculate(num3);
}
var resultString=getHalfOf(10,20,30);
alert(resultString); // 輸出 "5 10 15"
{
}
var ball0=new Ball(); // ball0 現在指向一個新對象
function Ball(message)
{
alert(message);
}
var ball0=new Ball("creating new Ball"); // 創建對象並輸出消息
ball0.name="ball-0"; // ball0現在有一個屬性:name
alert(ball0.name); // 輸出 "ball-0"
function Ball(message)
{
alert(message);
}
var ball0=new Object();
ball0.construct=Ball;
ball0.construct("creating new ball"); // 執行 ball0.Ball("creating..");
ball0.name="ball-0";
alert(ball0.name);
{
}
var ball0=new Ball(); // ball0 現在指向了類型Ball的一個新實例
ball0.name="ball-0"; // ball0 現在有一個屬性"name"
ball1.name="ball-1";
alert(ball1.name); // 輸出 "ball-1"
alert(ball2.name); // 哦,我忘記給ball2添加“name”了!
function Ball(message, specifiedName)
{
alert(message);
this.name=specifiedName;
}
var ball0=new Ball("creating new Ball", "Soccer Ball");
alert(ball0.name); // prints "Soccer Ball"
因此,這行:this.name=specifiedName變成了ball0.name="Soccer Ball"。
它主要是說:給ball0添加屬性name,屬性值是Soccer Ball。
我們現在只是添加了一個name屬性給ball0,看起來和上一個例子中所做的很象,但卻是一個更好更具擴展性的方法。現在,我們可以隨心所欲的創建許多帶有屬性的ball而無需我們手動添加它們。而且,人們也希望創建的Ball對象能夠清晰的看懂它的構造函數並且能夠輕鬆找出Ball的所有屬性。讓我們添加更多屬性到Ball裏。
{
this.name=specifiedName;
this.color=color;
this.owner=owner;
this.weight=weigth;
}
var ball0=new Ball("black/white", "Soccer Ball", "John", 20);
var ball1=new Ball("gray", "Bowling Ball", "John", 30);
var ball2=new Ball("yellow", "Golf Ball", "John", 55);
var balloon=new Ball("red", "Balloon", "Pete", 10);
alert(balloon.name); // 輸出 "Balloon"
alert(ball2.weight); // 輸出 "55"
{
this.name=name;
this.salary=salary;
this.supervisor=mySupervisor;
}
var boss=new Employee("John", 200);
var teamLeader=new Employee("Rose", 50, boss);
alert(manager.name+"\'s supervisor is "+manager.supervisor.name);
{
this.name=name;
this.salary=salary;
{
return this.salary;
};
}
function addSalaryFunction(addition)
{
this.salary=this.salary+addition;
}
boss.addSalary(10000); // boss 長了 10K 工資……爲什麼老闆工資可以長這麼多:'(
alert(boss.getSalary()); // 輸出 210K……爲什麼默認工資也那麼高……:'(
{
this.name=name;
this.salary=salary;
{
return this.salary;
};
}
function addSalaryFunction(addition)
{
this.salary=this.salary+addition;
}
var boss2=new Employee("Joan", 200000);
var boss3=new Employee("Kim", 200000);
{
this.name=name;
this.salary=salary;
this.getSalary=function()
{
return this.salary;
};
}
function addSalaryFunction(addition)
{
this.salary=this.salary+addition;
}
var boss2=new Employee("Joan", 200000);
// 給getSalary函數對象添加屬性
boss1.getSalary.owner="boss1";
boss2.getSalary.owner="boss2";
alert(boss1.getSalary.owner); // 輸出 "boss1"
alert(boss2.getSalary.owner); // 輸出 "boss2"
// 如果兩個對象指向同一個函數對象,那麼
// 上面兩個輸出都應該是“boss2”。
boss1.addSalary.owner="boss1";
boss1.addSalary.owner="boss2";
alert(boss1.addSalary.owner); // 輸出 "boss2"
alert(boss2.addSalary.owner); // 輸出 "boss2"
// 因爲兩個對象都指向同一個函數,(子烏注:原文寫are not pointing to the same function,疑爲筆誤)
// 當修改其中一個的時候,會影響所有的實例(所以兩個都輸出“boss2”).
{
this.name=name;
this.salary=salary;
this.getSalary=getSalaryFunction;
}
function getSalaryFunction()
{
return this.salary;
}
{
this.salary=this.salary+addition;
}
function Test()
{
}
alert(Test.prototype); // 輸出 "Object"
function Fish(name, color)
{
this.name=name;
this.color=color;
}
Fish.prototype.livesIn="water";
Fish.prototype.price=20;
var fish1=new Fish("mackarel", "gray");
var fish2=new Fish("goldfish", "orange");
var fish3=new Fish("salmon", "white");
for (int i=1; i<=3; i++)
{
var fish=eval("fish"+i); // 我只是取得指向這條魚的指針
alert(fish.name+","+fish.color+","+fish.livesIn+","+fish.price);
}
"mackarel, gray, water, 20"
"goldfish, orange, water, 20"
"salmon, white water, 20"
{
this.name=name;
this.salary=salary;
}
Employee.prototype.getSalary=function getSalaryFunction()
{
return this.salary;
}
{
this.salary=this.salary+addition;
}
var boss1=new Employee("Joan", 200000);
var boss2=new Employee("Kim", 100000);
var boss3=new Employee("Sam", 150000);
alert(boss1.getSalary()); // 輸出 200000
alert(boss2.getSalary()); // 輸出 100000
alert(boss3.getSalary()); // 輸出 150000