博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript中的function对象
阅读量:6001 次
发布时间:2019-06-20

本文共 1705 字,大约阅读时间需要 5 分钟。

function对象都是Function的实例:

> Object.getOwnPropertyNames(Function)[ 'length',  'name',  'arguments',  'caller',  'prototype' ]

所以function对象也应该有这些方法或者是属性:

 

 

 

所以如果你想要拓展函数,可以给函数添加一些方法:

var myFunction = function func(name,age){}myFunction.print = function(){    console.log("name");}myFunction.print();

如果你想要让所有的函数都有某些属性,那就必须修改Function.prototype了

var myFunction = function func(name,age){}Function.prototype.print = function(){    console.log("name");}myFunction.print();

把函数对象也当成对象,感觉特别不习惯,因为习惯上我会这样做(你让我想象一下,在java中类里面的方法也是对象,可以被调用,然后这个方法还可以有自己的属性,这是多么不可想象的):

var myFunction = function func(name,age){    this.name = name;    this.age = age;}

我以为我的真的给这个函数对象添加了name和age属性,但是实际上你要这样做:

var myFunction = function func(){}myFunction.name = 'myFunction';myFunction.age = 19;console.log(myFunction.name);console.log(myFunction.age);

这时候你就会发现它跟你创建的其他普通对象是不一样的,比如:

var MyObject = function func(){    this.name = 'name';    this.age = 20}var my = new MyObject()console.log(my.age);

你会想怎么这种对象会这么奇特,不是跟function对象添加属性是一样的

Function.method('new', function ( ) {// Create a new object that inherits from the// constructor's prototype.    var that = Object.create(this.prototype);// Invoke the constructor, binding –this- to// the new object.    var other = this.apply(that, arguments);// If its return value isn't an object,// substitute the new object.    return (typeof other === 'object' && other) || that;});

原因就是new这个操作符所做的操作跟上面这个函数是一样的

所以现在function对象跟其他的object对象就应该统一在一起了:

var myFunction = function func(){}myFunction.name = 'name';myFunction.age = 29myFunction.get_age = function(){    console.log(this.age);}myFunction.get_age();

 函数还有一个特点就是他是可以被调用的,它被调用的时候this是根据上下文指向不同的对象

转载于:https://www.cnblogs.com/ghgyj/p/4006235.html

你可能感兴趣的文章
面向对象编程-何为对象
查看>>
L2TP/IPSec一键安装脚本
查看>>
android以json形式提交信息到服务器
查看>>
CetnOS 6.7安装Hive 1.2.1
查看>>
最短最优升级路径(完美世界2017秋招真题)
查看>>
【PHP基础】错误处理、异常处理
查看>>
Android之drawable state各个属性详解
查看>>
Linux——网段的划分,子网掩码,ABC类地址的表示法
查看>>
android开发(22)使用正则表达式 。从一个字符串中找出数字,多次匹配。
查看>>
AJAX
查看>>
2015 多校联赛 ——HDU5334(构造)
查看>>
mysql字符集
查看>>
DP_1d1d诗人小G
查看>>
非、半、结构化数据学习【转载】
查看>>
SpringMVC之单/多文件上传
查看>>
avalon加载一闪而过现象
查看>>
线段树模板【数据结构 - 线段树】
查看>>
Castle IOC概念理解
查看>>
如何配置Log4Net使用Oracle数据库记录日志
查看>>
一道在知乎很火的 Java 题——如何输出 ab【转】
查看>>