在String()构造器不存在的情况下自定义一个MyString()函数,实现如下内建String()方法和属性: var s = new MyString("hello"); s.length; s[0]; //"h" s.toString(); //"hello" s.charAt(1); //"e" s.charAt("0"); //"h" s.slice(0,-1); //&qu…
bill是 Employee类型的实例,_proto_指向Employee.prototype Employee.prototype有一个constructor属性,指向Employee函数自身 function employee 就是一个函数类型的对象了,有标准的arguments.caller.length(参数个数).prototype等属性, 它的prototype跟bill._proto_指的是同一个对象. 因为每个对象都有_proto_属性,指向这个对象的创建函数的prototype…
一.创建函数 函数是一种对象:Function类 是对象,可以通过 Function 实例化一个函数,不过最多的还是利用 function 来创建函数. 方式一:利用 Function类 来实例化函数: var people=new Function("name","sex","if (sex=='男') return name+'先生: 您好!'; else return name+'女士: 您好!';"); people('小强','男')…
Function.prototype.bind 函数,参见ECMA规范地址 如题,这次来实现一个boundFunction函数,不挂载在Function.prototype上,而是一个单独声明的函数.挂载在原型上的bind,可以参考MDN 主要步骤,摘自ECMA规范,如图: 实现思想:当然是依葫芦画瓢,这里,我们借用ES6的...运算符与解构赋值.目的是图省事,实现bind函数,主要是了解其内部的操作流程. 首先,把需要用到的函数,都依照规范声明实现,其中FunctionIsConstructo…
与其他对象相同的是,函数对象中也有一个叫做constructor的属性,其引用就是Function()这个构造函数. function her(a){ return a; } console.log(a.constuctor); //function her(a){ // return a; //} 另外函数也有一个length属性,用来记录该函数声明时的参数的数量. function her(a,b, c){ return a+b+c; } console.log(her.length); p…
NOW,今天让我们来实现一个extend函数. 具体思路: 使用Object.defineProperty()对属性的特性进行设置,然后通过Object.getOwnPropertyDescriptor()获取到属性描述符,并赋值给新创建的对象 下面我们把代码拉出来溜溜 Object.defineProperty(Object.prototype, "extend", { writable: true, enumerable: false, configurable: true, va…
delphi的一个公用函数库 {********************************************** ***  Name: PublicFunc; ***  Author: lyz 2004-3-17; *** ***  Function: 公共函数: **********************************************} unit PublicFunc; interface uses   Windows, Math , SysUtils, Cla…
Python装饰器(decorator)在实现的时候,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变),为了不影响,Python的functools包中提供了一个叫wraps的decorator来消除这样的副作用.写一个decorator的时候,最好在实现之前加上functools的wrap,它能保留原有函数的名称和docstring.废话不多说,上俩栗子就能搞明白! 实例一: 不加wraps # -*- coding=utf-8 -*- from functools imp…
使用闭包的方式实现一个累加函数 addNum,参数为 number 类型,每次返回的结果 = 上一次计算的值 + 传入的值,如: addNum(10); //10 addNum(12); //22 addNum(30); //52 写法一 function sum(numberOne) { var count = numberOne; return function by(numberTwo) { if (numberTwo === undefined) { return count; } el…