900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > javascript类构造函数和自己更新自己函数代码实例详解

javascript类构造函数和自己更新自己函数代码实例详解

时间:2019-09-03 16:14:16

相关推荐

javascript类构造函数和自己更新自己函数代码实例详解

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!

这种函数可以用于只运行一次的逻辑,在第一次运行之后就整个替换成一段新的逻辑。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。