急急急.请问this对象问题?<script type="text/javascript">function k(){
this.s=123;
document.write (k.s)
}</script>
不是说this对象指的是k函数名不包括(),为什么老子输出k.s没东西啊?他妈的.第二段代码<script type="text/javascript">function k(){
this.s=123;
}
k();
document.write (k.s);<--------------这里也没东西!
</script>
下面有人说法不一:一种是说this指的是k函数名
一种是说this指的是k()函数名加括号.
一种是说this指的是function k()指一整个包括function关键字.我去他妈的,怎么这么多的版本说法啊,我查了一下js的chm手册,上面说函数名才是this对象,然后更详细的就没讲了,妈的,可能也是因为避重就轻,一带而过,我去他妈的B的了....js的chm手册可能也是哪个人翻译的,一错大家全错.然后不太爽,翻了三本书,一本是javsctipt权威指南,一本是javscript高级程序设计,一本是零基础学javscript一看,老子昏过去了,全是避重就轻,关键不讲,不关键的大讲特讲,讲什么鸡毛也不知道.我去他妈的了....我实在对javscript很不爽,没有vbscript用的那么爽,妈的B,不行,老子不爽,准备上当当.com再入手5本javascript的书我要翻底朝天,妈的B
this.s=123,意思就是k.s=123,妈的B,老子一输出全毛的没东西,干他老母的.有谁知道什么原因?
老子准备上当当网再入手5本javscript的书,请给推荐几本好的书.贵的也无所谓,只要能学的好就可以.

解决方案 »

  1.   

    this 没深入研究,支持一下。
      

  2.   

    广告吧………………
    var k = function (a){ 
    this.s=a; 
    }var b = new k(123);
    alert(b.s);此处的function已经是类的创建了,不简单是个函数
      

  3.   

    LZ思维有点混乱了
    用typeof看的话k的类型是function,说到底是一个对象。所以k具有Function类型的对象具有的一切方法和属性,包括call, apply, callee……(具体查阅MSDN)但是function类型没有定义一个叫s的属性,所以k.s肯定是undefined.再换个写法:
    var k = function() {
      this.s=123;
    };
    这样是不是更好理解k是个function了?再换一个
    var k = new Function("this.s=123");
    明白k是个什么东西了吗?只是用了不同的语法,这个才是本质。
    但是k除了做一个函数之外还可以做一个对象的构造函数,做这个用途的时候必须用
    var j = new k();
    这样就会用k作为构造函数创造一个新对象,这个时候this就会指向新创建的这个对象。其他情况下this默认是指向window对象的。所以试试
    function k() {
      this.s = 123;
      alert(window.s);
    }