首页 新闻 会员 周边 捐助

js 大佬不懂啥原因

0
悬赏园豆:20 [已解决问题] 解决于 2018-10-14 07:16

<!doctype html>
<html ng-app="app">

<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(function (){
var temp =new a();
temp.b();

        })
    var a=function (){
         var b=function (){
            alert(1);
        }
    }

    </script>
    
        

</head>

</html>

js
fangpengcheng_方鹏程的主页 fangpengcheng_方鹏程 | 菜鸟二级 | 园豆:206
提问于:2018-09-07 10:22
< >
分享
最佳答案
2

正确写法如下:
var a=function(){
this.b=function(){
alert(1);
}
}
var temp =new a();
temp.b();
--------------------------------------------------------
你的写法不对,所以报错了。a是一个函数对象(你可以理解为一个类),你在这个类里定义了一个函数b,但仅仅只是定义了一下,这个b在函数a内部,但并不是函数a自己的,所以你实例化a了以后,temp.b();并不会得到你要的结果。上面我写的栗子里,将匿名函数赋值给力this.b,这个this就是a,意思就是,我定义的函数b,是a的,这个时候,你再去实例化a以后,temp.b();才是a函数的b方法,才会得到你要的结果。

收获园豆:20
顾星河 | 大侠五级 |园豆:7288 | 2018-09-07 10:38
其他回答(4)
0

js里面的方法定义不能这样定义!可以百度

凡人修仙迹 | 园豆:369 (菜鸟二级) | 2018-09-07 11:18

没报错啊

支持(0) 反对(0) fangpengcheng_方鹏程 | 园豆:206 (菜鸟二级) | 2018-09-07 13:52
0
var a = function (){
    this.b = function (){
        alert(1);
    }
}

要這樣寫喔

RosonJ | 园豆:4910 (老鸟四级) | 2018-09-07 14:21
0

在函数里面var b;
它的对象是window,
而不是你的temp,
所以你需要改成this.b;
并不是不报错就不是错。

你风致 | 园豆:2215 (老鸟四级) | 2018-09-11 09:20
0
var a = function(){
     a.prototype.b = function(){ 
          alert("1")
     }       
}

var temp = new a();
temp.b()
写代码的相声演员 | 园豆:517 (小虾三级) | 2018-09-18 17:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册