欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

js 给一个对象的属性赋值(赋一个函数名称) 有大用 有大大用

js 给一个对象的属性赋值(赋一个函数名称) 
例如:var oo = new Object (); 
oo.name = abc; 
function abc(){
alert(1);

这样没有报错,也可以正常输出
请问:如何赋值一个带参数的函数,例如想做如下操作:
oo.name = abc; 
function abc(id){
alert(id);
}



yaa2004 
推荐于2016-04-28    
调用的时候传递参数就可以了
如:
<script>
var oo = new Object ();
oo.name = abc;
function abc(id){
alert(id);
}
oo.name(2);

</script>
 本回答由提问者推荐

来自  https://zhidao.baidu.com/question/272856296.html


js函数带括号和不带括号赋给对象属性的区别

注意:        

1.js为对象添加函数时,不要在函数后面加()。一旦加了括号是表示将函数的返回值赋给对象的属性。        

例:function test(){

  document.writeln("我是js函数")

}

var obj = new Object();

obj.info=new function(){//给对象属性添加方法

}

obj.info=test;//将一个已有的函数添加给对象属性<ajax连接的回调函数就是这么写,注意不需要括号>

 2.在同个<script>元素中,可以先调用函数然后再定义函数;不同的<script>元素中必须先定义函数然后再调用。        

<script>

hello("javascript");

function hello($){

 alert($+"你好哈");

}

</script>

来自 https://www.cnblogs.com/huyuyu/p/8552313.html





js为何将函数作为对象属性值后,只执行一次?
听语音        



我们知道在js里面,万物皆对象。

给对象设置各种值是也是常有的事。

然而有时给对象属性的值设为函数时,却发现只执行一次,然后不再执行了,这是为什么呢?

js为何将函数作为对象属性值后,只执行一次?                    

工具/原料
           

  • 一个浏览器

函数只执行一次的现象
           

  1. 1

    基本实现代码如下


                           

    var myName="张三";


                           

    function fn(name){

    return "hello i am "+myName;

    }


                           

    var obj={

    par1:fn(),

    }

    js为何将函数作为对象属性值后,只执行一次?                        
  2. 2

    运行结果

    "hello i am 张三"

    js为何将函数作为对象属性值后,只执行一次?                        
  3. 3

    然后我修改了变量myName

     myName="李四";

    js为何将函数作为对象属性值后,只执行一次?                        
  4. 4

    修改后执行结果还是为:"hello i am 张三"

    【说明这个作为对象属性的函数只执行了一次】

    js为何将函数作为对象属性值后,只执行一次?                        
    END                    

函数只执行一次的原因
           

  1. 1

    由于我们将函数赋值为对象属性值时,形式为函数名+括号

    也就是 fn().

    js为何将函数作为对象属性值后,只执行一次?                        
  2. 2

    这种情况就会出现,我们的属性值不是一个函数,而是一个函数的执行结果。也就是函数返回值,如果没有返回值,那么属性结果就是undefined。


                           

    这也就是为什么我们后面更改了函数返回的变量的值后,属性值没变。因为属性的值不是一个函数,只是第一次函数执行时返回的结果

    js为何将函数作为对象属性值后,只执行一次?                        
    END                    

函数只执行一次的解决办法
           

  1. 1

    既然知道了其原因是将函数赋值给对象属性时,由于加了个括号。从而赋值的是函数调用执行后返回的结果。


                           

    那么解决办法一:

    给对象属性赋值时,只赋值函数名。不要括号

    如下

    js为何将函数作为对象属性值后,只执行一次?                        
  2. 2

    运行结果如下:

    (此时就ok了,对象属性的值是一个函数了,每次修改函数依赖的变量后,属性值就会跟着改变)

    js为何将函数作为对象属性值后,只执行一次?                        
  3. 3

    解决方法二:

    给函数属性赋值时直接赋值一个匿名函数。如下:

    var myName="张三";

    var obj={

    par1:function(){

    return "hello i am "+myName;

    },

    }

    js为何将函数作为对象属性值后,只执行一次?                        
  4. 4

    运行结果如下:

    (此时也ok了,对象属性的值是一个函数了,每次修改函数依赖的变量后,属性值就会跟着改变)

    js为何将函数作为对象属性值后,只执行一次?                        
  5. 5

    总结下:

    1. 如果函数是在对象之外定义的。

    那么想要将函数作为对象属性的值的话,只能将函数名赋值给对象属性。赋值时调一定不要加括号。使用时为obj.pro(),属性名加一个括号。

    2. 如果函数直接就是定义在对象属性后的匿名函数,那么对象属性的值直接就是函数,调用时方式同上为obj.pro(),属性名加一个括号。


                           

    也就是对象属性的值直接就是函数,那么调用时就必须加上一个括号!

    如: obj.par1();

    END                    

注意事项
           

  • 如果您觉得我的经验稍微有点作用的话,请给我点下赞或投下票,如果有疑惑可以给我留言,看到后我会回答的
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
举报作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。    

来自  https://jingyan.baidu.com/article/a501d80c3ca68aec630f5eb7.html

普通分类: