首页 > 代码库 > JavaScript基础-自己定义自己的函数
JavaScript基础-自己定义自己的函数
把一个函数对象赋值给变量后,就可以通过这个变量再次定义函数,甚至可以在一个函数内部再次定义它自己:
var scareMe = function () { alert("Boo!"); scareMe = function () { alert("Double boo!"); };};// using the self-defining functionscareMe(); // Boo!scareMe(); // Double boo!
如果你需要在一个函数第一次执行的时候做一些特别的事情,就可以使用这种模式。但如果把这个变量赋值给另一个对象再执行,或是把它作为一个对象的方法执行,这种模式有可能会失效,考虑下面的代码:
// 1. adding a new propertyscareMe.property = "properly";// 2. assigning to a different namevar prank = scareMe;// 3. using as a methodvar spooky = { boo: scareMe};// calling with a new nameprank(); // "Boo!"prank(); // "Boo!"console.log(prank.property); // "properly"// calling as a methodspooky.boo(); // "Boo!"spooky.boo(); // "Boo!"console.log(spooky.boo.property); // "properly"// using the self-defined functionscareMe(); // Double boo!scareMe(); // Double boo!console.log(scareMe.property); // undefined
这种模式的核心就是secareMe存放的是一个函数对象的引用,而这个引用在原来的函数对象中被修改。所以当这个函数对象的引用被赋值给另一个变量 prank时,就不能通过secareMe来修改parnk的引用,所以模式就失效了。这也体现了JavaScript里函数是一个对象的事实。
JavaScript基础-自己定义自己的函数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。