Javascript定义一个函数
定义函数
js中有三种函数定义的方式:1.函数声明; 2.函数表达式;3.构造函数
在Javascript定义一个函数一般有如下三种方式:
- 函数关键字(function)语句:
function fnMethodName(x){alert(x);}(最常用的方法) - 函数字面量(Function Literals):
var fnMethodName = function(x){alert(x);} - Function()构造函数:
var fnMethodName = new Function(‘x’,’alert(x);’)
后两种都是把一个函数复制给变量fnMethodName,而这个函数是没有名字的,即匿名函数(拉达姆函数)。
new 一个函数之后发生了什么?
- 创建一个新的对象obj
- 将对象与构造函数通过原型链连接起来
- 将构造函数中的this绑定到新建的对象obj上
- 根据构造函数返回类型作判断,如果构造方法返回了一个对象,那么返回该对象,否则返回第一步创建的新对象
function myNew(Func, ...args) {// 1.创建一个新对象const obj = {}// 2.新对象原型指向构造函数原型对象obj.__proto__ = Func.prototype// 3.将构建函数的this指向新对象let result = Func.apply(obj, args)// 4.根据返回值判断return result instanceof object ? result : obj}//测试function Person(name, age) {this.name = name;this.age = age;}Person.prototype.say = function () {console.log(this.name)}let p = myNew(Person, "Demi", 123)console.log(p) // Person {name: "Demi", age: 123}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
