web前端|js教程
javascript,js,更新
web前端-js教程
类构造函数
JavaScript的函数同时作为类的构造函数,因此只要声明一个函数就可以使用new关键字创建类的实例。
html5手机网站源码,ubuntu+cd源,tomcat的单个并发量,面盆出现爬虫,php怎样扩展mongodb,福建seo推广知识一站式服务lzw
function Person(name) { this.name = name; this.toString = function() {return Hello, + this.name + !; }; }var p = new Person(Ghostheaven); alert(p); // Hello, Ghostheaven!
在以上实例中Person函数作为类的构造函数使用,此时this指向新创建的实例对象,可以为实例增加属性和方法,关于详细的面向对象的JavaScript编程可以参考这篇文章。这里我想要说的是,JavaScript函数作为类构造函数使用时的返回值问题。
在线预约挂号 源码,vscode远程调试原理,ubuntu数据提取,tomcat内存泄露分析,sqlite数据库注册码,生桩花盆里有小爬虫怎么弄,php 截取 之间,淮北seo公司找哪家,支付宝网站充值原理,css静态网页模板lzw
function MyClass(name) { this.name = name; return name; // 构造函数的返回值? }var obj1 = new MyClass(foo); var obj2 = MyClass(foo); var obj3 = new MyClass({}); var obj4 = MyClass({});
上面的构造函数比较特别,有返回语句,那么obj1~obj4分别指向什么对象呢?实际结果是这样的:
诗文 源码,ubuntu桌面窗口好小,阿里云tomcat配置调优,python爬虫扫描网站,php网站建设大概多少钱,SEO无敌宝典lzw
obj1 = MyClass对象obj2 = fooobj3 = {}obj4 = {}
Function类
在JavaScript运行时中有一个内建的类叫做Function,用function关键字声明一个函数其实是创建Function类对象的一种简写形式,所有的函数都拥有Function类所有的方法,例如call、apply、bind等等,可以通过instanceof关键字来验证这个说法。
既然Function是一个类,那么它的构造函数就是Function(它本身也是Function类的对象),应该可以通过new关键字来生成一个函数对象。第一个妖怪来了,那就是如何用Function类构造一个函数。Function的语法如下:
new Function ([arg1[, arg2[, ... argN]],] functionBody)
其中arg1, arg2, … argN是字符串,代表参数名称,functionBody也是字符串,表示函数体,前面的参数名称是可多可少的,Function的构造函数会把最后一个参数当做函数体,前面的都当做参数处理。
var func1 = new Function( ame, eturn "Hello, " + name + "!";); func1(Ghostheaven); // Hello, Ghostheaven!
以上方法就通过Function构造了一个函数,这个函数跟其他用function关键字声明的函数一模一样。
Function类有它独特的用途,你可以利用它动态地生成各种函数逻辑,或者代替eval函数的功能,而且能保持当前环境不会被污染*。
自更新函数
在很多语言中,函数一旦声明过就不能再次声明同名函数,否则会产生语法错误,而在JavaScript中的函数不仅可以重复声明,而且还可以自己更新自己。自己吃自己的妖怪来了!
function selfUpdate() { window.selfUpdate = function() {alert(second run!); }; alert(first run!); }selfUpdate(); // first run! selfUpdate(); // second run!
这种函数可以用于只运行一次的逻辑,在第一次运行之后就整个替换成一段新的逻辑。