<!DOCTYPE html>
<html>
<body>
<script>
function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
 
this.changeName=changeName;
function changeName(name)
{
this.lastname=name;
}
}
myMother=new person("Steve","Jobs",56,"green");
myMother.changeName("Ballmer");
document.write(myMother.lastname);
</script></body>
</html>this.changeName=changeName;
function changeName(name)
{
this.lastname=name;
}   这段代码不明白什么意思,this.changeName=changeName;怎么可以把函数这样用啊?

解决方案 »

  1.   

    function 可以看成是一个对象 也可以看成是一个类
      

  2.   

    而在JavaScript世界中函数却是一等公民,它不仅拥有一切传统函数的使用方式(声明和调用),而且可以做到像简单值一样赋值、传参、返回,这样的函数也称之为第一级函数(First-class Function)。不仅如此,JavaScript中的函数还充当了类的构造函数的作用,同时又是一个Function类的实例(instance)。这样的多重身份让JavaScript的函数变得非常重要。所以不能简单的与别的语言的函数等同起来,javascript的函数可以象别的对象如string一样给付值,给引用,函数可以注入一个函数并执行,比如经典的each
    Array.prototype.each= function(fn, bind){
    for (var i = 0, l = this.length; i < l; i++){
    if (i in this) fn.call(bind, this[i], i, this);
    }
    }就是array中每个item当成参数去执行注入的function
      

  3.   

    只是属性名字和方法名相同了而已呀,this.changeName=changeName;第一个changeName是这个类的属性,第二个changeName是这个类的方法。虽然名字相同,事实上是不同的。你也可以写成this.changeName=test;function test(){....}  这个方法的名字可以任何符合要求的命名。