javascript的函数

2019-06-03 07:56:18丽君


var ball1=new Ball();
ball1.name="ball-1";

var ball2=new Ball();

alert(ball0.name);    // 输出 "ball-0"
alert(ball1.name);    // 输出 "ball-1"
alert(ball2.name);    // 哦,我忘记给ball2添加“name”了!

  我忘记给ball2添加属性name了,如果在正式的程序中这也许会引发问题。有什么好办法可以自动增加属性呢?嗯,有一个:使用this关键字。this这个词在function中有特别的意义。它指向了调用函数的那个对象。让我们看看下面的另一个示例,这时候我们在构造函数中添加上这些属性:

Example DT4 


[Copy to clipboard]CODE:
function Ball(message, specifiedName)
{
  alert(message);
  this.name=specifiedName;                
}
var ball0=new Ball("creating new Ball", "Soccer Ball");  
alert(ball0.name);                   // prints "Soccer Ball"

  请记住:是new关键字最终使得构造函数被执行。在这个例子中,它将会运行Ball("creating new Ball", "Soccer Ball");而关键字this将指向ball0。
  因此,这行:this.name=specifiedName变成了ball0.name="Soccer Ball"。
  它主要是说:给ball0添加属性name,属性值是Soccer Ball。 
  我们现在只是添加了一个name属性给ball0,看起来和上一个例子中所做的很象,但却是一个更好更具扩展性的方法。现在,我们可以随心所欲的创建许多带有属性的ball而无需我们手动添加它们。而且,人们也希望创建的Ball对象能够清晰的看懂它的构造函数并且能够轻松找出Ball的所有属性。让我们添加更多属性到Ball里。

Example DT5


[Copy to clipboard]CODE:
function Ball(color, specifiedName, owner, weight)
{
  this.name=specifiedName;                
  this.color=color;
  this.owner=owner;
  this.weight=weight;
}
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(ball0.name);                        // 输出 "Soccer Ball"