如何证明js中的function是引用类型?



 var obj = {};
var obj2 = obj;
obj.name = 'jason';
console.log(obj);//Object {name: "jason"}
console.log(obj2);//Object {name: "jason"}

上面代码能证明对象是引用类型

那如何证明function呢?

update

我用的是 name 。。。


 var a = function(){};
  var b = a;
  a.name = 'jason';
  console.log(a.name);//啥也没有
  console.log(b.name);//啥也没有

这是为啥?

function JavaScript

幻月D静马 9 years, 4 months ago

如果我说所有的js类型都是引用类型(除了 null undefined ),你会相信吗?

asdfd answered 9 years, 4 months ago

这岂不是同样的道理,因为function也是对象啊

比利♂海灵顿 answered 9 years, 4 months ago

同样的道理


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

b.xx = 123;
console.log(a.xx);

a.xyz = 456;
console.log(b.xyz);

clipboard.png


更新:


 function hello(){};
var b = hello;

console.log(b.name);

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name

clipboard.png

简单点讲 就是 function 对应的 name 属性不可更改, 不过 IE 不遵守这条规则, 且这条规则是在ES6中提出的, 所以你可以在IE下试试, 就会发现 name 会变的.

雪ノ下・雪乃 answered 9 years, 4 months ago

Your Answer