js之Function原型】的更多相关文章

在ECMAScript中,Function(函数)类型实际上是对象.每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法.由于函数是对象,因此函数名实际上也是一个指向函数对象的指针. 1.三种函数声明的方式 1>第一种:普通方式声明函数 function box (num1,num2){ return num1+num2; } 2>第二种:使用变量初始化的方式: var box =function(num1,num2){ return num1+num2; };  3…
基本概念 1.函数可以通过Function new出来,那么Function可以被称作构造函数,被new出来的函数可以被称为一个对象 2.Function既然是构造函数,那么肯定也有原型,它的原型是一个空的函数 3.Function的原型对象的原型对象最终指向的是object.prototype 原型链图 由上面基本概念衍生出的原型链图 1.Person构造函数,它既然是函数,那么肯定可以通过Function创建出来,那么就可以被当作对象 2.P对象还是函数对象,最后指向的都是object.pr…
转载 http://blog.csdn.net/niuyongjie/article/details/4810835 在学习JS的面向对象过程中,一直对constructor与prototype感到很迷惑,看了一些博客与书籍,觉得自己弄明白了,现在记录如下: 我们都知道,在JS中有一个function的东西.一般人们叫它函数.比如下面的代码 js代码: function Person(name) { alert(name); } Person('js');//js 上面的代码中,Person的表…
最近看到一个别人写的js类库,突然对js中的原型及继承产生了一些想法,之前也看过其中的一些内容,但是总不是很清晰,这几天利用空闲时间,对这块理解了一下,感觉还是有不通之处,思路上没那么条理,仅作为分享, 一.instanceof 在JavaScript有instanceof运算符,是二元运算符,使用方法 instanceA instanceof A,返回值是布尔值(boolean),含义是判断instanceA是否是A的一个实例,其实质是判断A.prototype===instanceA.__p…
网上有一道美团外卖的面试题是这样的: Function.prototype.a = 'a'; Object.prototype.b = 'b'; function Person(){}; var p = new Person(); console.log('p.a: '+ p.a); // p.a: undefined console.log('p.b: '+ p.b); // p.b: b 问为什么? 有不少同学第一眼看上去就觉得很疑惑,p不是应该继承了Function原型里面的属性吗,为什么…
基于原生JS封装数组原型上的sort方法 最近学习了数组的原型上内置方法的封装,加强了用原生JS封装方法的能力,也进一步理解数组方法封装的过程,实现的功能.虽然没有深入底层,了解源码.以下解法都是基于个人理解用纯原生JS实现的功能.如有不对的地方,可以评论告诉我哟 首先,我们先来看一下sort方法的作用.参数.以及方法的返回值,原有数组是否发生改变 sort方法主要用于数组的排序 参数分为两种: 一种:传的参数是函数. (排序主要看函数的返回值) 另一种:传的不是函数.或者不传(只要传的不是函数…
不知道大家对JS中的原型理解的怎么样,我想如果大家对JS中的原型对象以及prototype属性十分熟悉的话对后面原型链以及继承的理解会十分的容易,这里想和大家分享自己对其的理解,请先看下面这段代码O(∩_∩)O~~ function Person(){ } Person.prototype.name = "jingzi"; Person.prototype.age = 20; Person.prototype.sayName = function(){ alert(this.name)…
1.原型: 在JavaScript 中,对象被表现为prototype . 原型其实一直存在于我们接触过的任何一个对象. 2. Tip:在函数对象中也存在__proto__属性,但是查看函数对象的原型还是要使用prototype . JavaScript 在创建对象的时候,无论是普通对象还是函数对象,都存在一个属性__proto__, JavaScript 的原型链 和继承主要依赖于__proto__ 我们可以通过__proto__ 和 prototype的结合 查看原型的每一个层级,也就是原型…
ECMAScript有两种开发模式:1.函数式(过程化),2.面向对象(OOP).面向对象的语言有一个标志,那就是类的概念,而通过类可以创建任意多个具有相同属性和方法的对象.但是,ECMAScript没有类的概念,因此它的对象也与基于类的语言中的对象有所不同.var box = new Object();box.name = 'Lee';box.age = 100;box.run = function(){ return this.name + this.age + '运行中...'; //th…
一. JS的对象 1.1 创建对象的几种方式 1.1.1 通过字面量创建对象 在js中,一对{} 其实就是一个对象 var person = { name: "tom", age: 23, read: function () { console.log(name, ": read book") } } 1.1.2 通过系统的构造函数 通过系统的构造函数创建一个空的对象,然后用js动态语言的特性,如果一个对象没有某个属性或者方法,那么我们点一下再附上值就好了 var…
js 构造函数 & 静态方法 & 原型 & 实例方法 ES5 "use strict"; /** * * @author xgqfrms * @license MIT * @copyright xgqfrms * @created 2020-10-10 * @modified * * @description 构造函数 静态方法 & 构造函数的原型 实例方法 * @description 构造函数上添加只有构造函数可以访问的静态方法 * @descrip…
Function对象(apply.call.bind) 原创文章,转摘请注明出处:苏福:http://www.cnblogs.com/susufufu/p/5850180.html 本文参考MDN做的详细整理,方便大家参考[MDN](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript) Function 构造器会创建一个新的 Function 对象. 在 JavaScript 中每个函数都是一个Function对象. 构造器 new F…
创建对象 var box = new Object();//创建对象 box.name = 'Lee'; //添加属性 box.age = 100; box.run = function(){ return this.name + this.age + "运行中"; //this 表示当前作用域下对象 } // this 表示new Object()实例出来的那个对象 alert(box.run()); 这就是创建对象最基本的方法,但是有个缺点,想创建一个类似的对象,就会产生大量的代码…
JS 关于(function( window, undefined ) {})(window)写法的理解 [网络整理] (function( window, undefined ) {})(window); 这个,为什么要将window和undefined作为参数传给它? (function( $, undefined ) {})(jQuery); 同理 因为 ecmascript 执行JS代码是从里到外,因此把全局变量window或jQuery对象传进来,就避免了到外层去寻找,提高效率.und…
原文:js小记 function 的 length 属性 [1,2,3]., ,这个略懂js的都知道. 但是  eval.length,RegExp.length,"".toString.length,1..toString.length  会得到什么呢? 分别得到 ,,,,这些数字代表什么呢? 这个是群里很多新人朋友一直问的一个问题,其实函数的 length 得到的是形参个数.可以参见这里 <MDN Function.length>.我们来简单看个例子: function…
大家都知道在JavaScript中是没有类的概念的,但是却是有对象的概念的.有的人可能理解对象和类有些迷糊,这里简单的概括一下他们之间的区别: 类:抽象的概念,例如人,动物,汽车等都可以抽象成一个类 对象:是指这种概念中的实体,例如"一个带着红帽子的小男孩"."一辆红色的奔驰汽车","一只白色的小猫"都是实体也就是对象 实例化:就是指以类为基础构建一个实体.类所拥有的特征,其实例化对象,也一定拥有这些特征,而且实例化后可能拥有更多特征. 用Jav…
js中function的与众不同在于可以被调用…
js里Function 与 function的不一样的,不仅仅是大小写的问题. 简单点说:大写的Function是一个类 ,而小写的function是一个对象. Function是一个构造器,function是Function实例化的一个对象,包含[[call]][[code]]等等属性,可以被执行. 具体使用方法: function callAnotherFunc(fnFunction, vArgument) { fnFunction(vArgument); } var doAdd = new…
js arrow function return object bug filterData: { type: Object, default: () => {}, required: true, }, OK filterData: { type: Object, default: () => ({}), required: true, }, test app = () => {}; () => {} app(); undefined app = (a) => {K: a};…
how to remove duplicates of an array by using js reduce function ??? arr = ["a", ["b", "c"], ["d", "e", ["f", "g"]]]; arr.flat(Infinity).reduce((acc, item) => { console.log(`acc`, ac…
js currying function All In One js 实现 (5).add(3).minus(2) 功能 例: 5 + 3 - 2,结果为 6 https://stackoverflow.com/questions/36314/what-is-currying 1. normal function function add (a, b) { return a + b; } add(3, 4); // 7 2. currying function function add (a)…
 许多OO语言都支持两种继承方式:接口继承和实现继承.接口继承只继承方法签名,而实现继承则继承实际的方法.如前所述,由于函数没有签名,在ECMAScript中无法实现接口继承.ECMAScript只支持实现继承,而且其实现继承主要是依靠原型链来实现的.                                              --摘自<JavaScript高级程序设计> 原型继承 原型链是实现原型继承的主要方法,基本思想就是利用原型让一个引用类型继承另一个引用类型的属性和方法.…
var arr1 = new Array(12,34,98,43,38,79,56,1); arr1.sum=function (){ var result = 0; for(var i=0; i<this.length; i++){ result += this[i]; } return result; }; alert(arr1.sum()); 如果现在还有个arr1 对象也要求和 var arr2 = new Array(54,29,1,10); 那么还要给 arr2再添加一个求个的方法…
之前有在自己的文章中谈到对象,而说到对象我们就不可避免的要扯到原型,并且原型也是我们必须得理解到位的一个点,那接下来我们就来聊一聊js的原型吧. JS中一切皆为对象,那么原型也是一种对象.所以它有对象的特性,无非也是一系列无序键值对的集合,接着我们就来具体看看吧 function person(name,age) { this.name=name; this.age=age; } var a=typeof person.prototype//object var b=typeof person.…
很快就要从新浪离职了,最近心情比较轻松,抽点空整理一下构造函数和原型的机理. 我们都知道,在经典设计模式中我们最常用的就是工厂模式.构造函数模式.原型模式这几种,听起来‘模式’好像很高大上的样子,实际上我们在日常写js代码中会经常用到. 简单的说,工厂模式就是我们平常写的一个个函数,当要完成某项功能时,就一遍一遍调用这个函数.如: function add(a,b){ return a+b; } 这是一个很简单的代码,完成的是一个很简单的两数相加的功能,当我们需要两数相加的计算时,调用这个函数就…
js中的对象分为两种:普通对象object和函数对象function. function fn1(){}; var fn2 = function(){}; var fn3 = new Function(); var fn4 = Function(); var obj1 = new fn1(); var obj2 = {}; var obj3 = new Object(); var obj4 = Object(); console.log(typeof fn1);//function consol…
它到底是什么 String Array 都是系统内置对象(已经定义好,可以直接使用)当然,这货也是一样,我们之前定义的函数,其实就是一个这货的实例. 在JS中,所有的对象都是由函数实现的,函数的数据类型是object.So,我们以前定义的函数也是一个对象. 几种写法 function fn1(a,b){ return a+b; } //前面表示参数,后面表示函数语句 var fn2 = new Function("a","b","return a+b&qu…
js里除了直接调用obj.func()之外,还提供了另外3种调用方式:apply.bind.call,都在function的原型里.这3种方法的异同在stackoverflow的这个答案里说的最清楚,下面只是自己的理解. 1. 异同 这3种方式的相同点是:改变了func调用的上下文,链接到新的对象上.这使得任何函数都可以被其他对象调用,即使这个对象没有定义该函数. 区别是:调用的方式不同. call: 最简单,立即调用,按顺序传参 apply:立即调用,按数组传参 bind: 延迟调用(返回一个…
昨天压缩Js文件时发现了项目中的一个prototype的问题代码如下所示: 1. <script> var XXX = function(){ }; var x1 = new XXX(); XXX.prototype.fnx = function(){ alert("123"); } x1.fnx(); </script> 2. <script> var XXX = function(){ }; var x1 = new XXX(); XXX.pro…
<script type="text/javascript"> function People(name){ this.name = name; //对象方法 this.introduce = function(){ alert("My name is "+this.name) } } //类方法 People.run = function(){ alert("I can run"); } //原型方法 People.prototyp…