prototype属性

每一个函数都包含prototype属性,这个属性是指向一个对象的引用,当将函数用作构造函数的时候,新创建的对象会从原型对象上继承属性

call和apply方法

以对象a的方法调用函数f()

f.call(a);
3

f为函数,a为对象

泛函

我感觉有必要复习一下下数学
指定义域为函数,而值域为实数的函数,这样的函数为泛函
至此结束,用js写一下泛函,这也是其函数式编程的基础

function m() {return 2;
}
function f(m) {var f1 = m;f1 = function() {return m.call();}return f1;
}

定义了两个函数,执行一下,第二个函数是将第一个,传入进入的函数

f.apply(m);
function f1()

输入为函数,输出为函数

bind方法

加里化,将多个参数的函数变换成接受一个单一参数的函数

ps 由逻辑学家 哈斯凯尔·加里命名

bind方法,将函数绑定至某个对象,当在函数f()上调用bind方法,并传入一个对象o作为方法,,这个方法将会返回一个新的函数,,将会以函数调用的方式,调用新的函数将会把原始函数f()当做o的方法调用。传入函数的任何实参都会传入新的函数

g = f.bind(o)
等价于
g = o.f
外加参数
g(x) = o.f(x)
function f(y,z) {return this.x + y + z;
};
f.x = 3;
var g = f.bind(f, 3);

好啦,这样就完成了一次加里化
如果不使用this仍可以使用

function f(y,z, e) {return y + z + e;
};var g = f.bind(null, 3, 2);

运行一下

g(3);
8

toString方法

返回源码, 过

Function构造函数

var f = new Function('x', 'y', 'return x + y');
undefined
f;
function anonymous()
f(3,2);
5

function()函数创建的是一个匿名函数
Function()构造函数运行js在运行时动态的创建并编译函数
每次调用Function()构造函数都会解析函数体,并创建新的函数对象,如果在一个循环或者多次调用的函数中执行并构造这个函数则执行效率会受影响
Function()构造函数所创建的不是使用词法作用域,相反,函数体代码的编译会在顶层函数执行。

ps,需要注意最后一点,Function()函数体代码是在顶层函数执行的

可调用的对象

类数组对象不是真正的数组,

var a = {};
for (var i = 0; i<10; i++) {a[i] = i*i;
}

以上生成的数组为类数组对象

js的prototype属性相关推荐

  1. js 的prototype 属性和用法,外加__proto__

    var ob = { };//超级简单的空对象 alert(JSON.stringify(ob.prototype));// undefined 能够引用prototype的东西绝对是函数,绝对是函数 ...

  2. JS中Prototype属性解释及常用方法

    1.prototype的定义 javascript中的每个类都有prototype属性,其prototype属性的解释是:返回对象类型原型的引用.每一个构造函数都有一个属性叫做原型.这个属性非常有用: ...

  3. js的Prototype属性 解释及常用方法

    函数:原型 每一个构造函数都有一个属性叫做原型(prototype,下面都不再翻译,使用其原文).这个属性非常有用:为一个特定类声明通用的变量或者函数. prototype的定义 你不需要显式地声明一 ...

  4. js原型prototype属性用法实例

    //原型方法创建对象的属性和方法,达到共享的目的 function Box(){};//里面什么都没有,如果有就是实例属性和方法 Box.prototype.name='tianwei'; Box.p ...

  5. JS函数浅析之constructor、prototype属性

    函数是JS里很神奇的一位童鞋.那么如何创建一个函数呢?简单来说有下面几种形式:     1.定义式     function a() {}     2.声明式     var a = function ...

  6. JS中函数的prototype属性和对象的__proto__属性

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  7. 彻底理解js中的原型对象和prototype属性

    prototype(函数的原型属性) prototype 是一个指向该实例所使用的原型对象的[指针] prototype 是几乎所有的函数(除了某些内建函数)的属性 prototype 不是一个实例的 ...

  8. JS的prototype和__proto__

    一.prototype和__proto__的概念 prototype是函数的一个属性(每个函数都有一个prototype属性),这个属性是一个指针,指向一个对象.它是显示修改对象的原型的属性. __p ...

  9. js中prototype,constructor的理解

    连看4篇前辈的文章,记录一些知识点 Javascript继承机制的设计思想 Javascript 面向对象编程(一):封装 Javascript面向对象编程(二):构造函数的继承 Javascript ...

最新文章

  1. CSDN登录机制分析(附上python、java代码)
  2. 启明云端分享|SSD202D核心板使用NFS
  3. JFreeChart(六)之3D饼图/条形图
  4. 亚信安全认证acse_重装出发 | 2019亚信安全合作伙伴大会珠海站召开
  5. git 远程代码回滚master
  6. 【搞事】HTTP文件传输服务器搭建|网站文件分享|HFSxCHFS用法
  7. 谈恋爱、结婚的5种境界
  8. epoll原理详解及epoll反应堆模型
  9. 动手编写操作系统(1):初识Bochs
  10. HTML5期末大作业:HTML+CSS茶叶官网网页设计实例 企业网站制作
  11. [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  12. node+express实现文件上传功能
  13. ReportStudio入门教程(七十二) - 显示时间进度(进度条版)
  14. Oracle 中add_months和trunc的用法,数据类型
  15. Sony vegas 制作电子相册
  16. Acceptance testing
  17. 计算机基础知识测试题库,计算机基础知识考试题库.doc
  18. 访问twitter_从命令行访问Twitter
  19. 路由之静态路由原理及配置
  20. 鼠标精灵对码软件_Photo Frame 图片编辑软件(相框精灵)

热门文章

  1. vs code .lua.txt 后缀文件识别为lua的配置
  2. Sunny Day ijk英语
  3. Linux下Weblogic创建域方法和步骤
  4. python sqlite3使用详解
  5. 第5 章持久化类(Persistent Classes)
  6. android中的多媒体应用camera
  7. VT技术开创普遍虚拟化计算时代
  8. oracle的clob字段导致线上应用无响应问题及解决
  9. Windows下安装MySQL5.7流程
  10. 一个播放器引发的思考——谈谈React跨组件通信