首页 > 代码库 > 用一段代码去了解函数的结构
用一段代码去了解函数的结构
1,关于构造函数:当我们要声明一个函数的时候,函数本身就是一个对象,在这个对象上可以定义自身属性及方法,这些属性属于静态方法,属性;此时的函数对象是由Function构造函数构建的,Function可定义原型,Function.prototype,在此原型对象定义的方法,属性,在function声明称的函数可访问;function fn()声明的函数对象,自带原型对象,可在fn.prototype定义方法,属性
2,实例化的构造函数: 通过new fn()实例化的函数类型对象,自身拥有执行上下文this,通过__proto__内部属性可访问构造函数的prototype,同时拥有此构造函数的变量对象,即作用域及链条
console.dir(Function.__proto__); console.dir(Function.__proto__.__proto__) //object console.dir(Function.__proto__.__proto__.__proto__); //null //用于构造函数的构造函数的静态方法 Function.FunctionStaticMethod = function() { console.log("I am static"); }; //用于构造函数的构造函数的原型 Function.prototype.FunctionPrototypeMethod = function() { console.log("Function Prototype Method"); } function fn() { var variable = "i am variable" this.selfName = " is fn attribute"; this.selfSay = function() { console.log(this.selfName); console.log(variable); } } //静态属性 fn.staticName = "I am static"; fn.staticMethod = function() { console.log(this.staticName); } //函数原型 fn.prototype.fnPrototypeName = "I am prototype"; fn.prototype.fnPrototypeFn = function() { console.log(this.selfName); } var fnObj = new fn(); //new fn自身方法 fnObj.selfSay(); //new fn原型方法 fnObj.fnPrototypeFn(); //fn的静态方法 fn.staticMethod(); console.dir(fn); console.dir(fnObj); for (var attr in fnObj) { console.log(attr); } for (var fnAttr in fn) { console.log(fnAttr); }
执行结果:
用一段代码去了解函数的结构
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。