首页
学习
活动
专区
圈层
工具
发布

JavaScript(五):函数(闭包,eval)

函数名的提升:JavaScript引擎将函数名等同视为变量名,所以采用function命令申明函数时,函数会像变量提升一样,提升至代码头部。...函数的参数:JavaScript参数不是必须的,允许参数省略;但是不能只传入靠后的参数,不传入靠前的参数(如果要达到这种效果,传入undefined) 1 console.log('---paras'...(); 也可以这样写: 1 (function(){console.log('orange')}()); 所以扩展开来,JavaScript以表达式来处理的函数定义的方法,均能产生这样的效果。...此外,eval函数中的字符串不会得到JavaScript引擎的优化,运行速度较慢!所有,建议尽量不要使用eval....(b2);//10 参考:阮一峰JavaScript标准参考教程

1.5K100
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JavaScript笔记(2) 构造函数和原型

    构造函数和原型 目标: 这些之前都学过的我就不多赘述了,直接将图片贴上来了 JavaScript的构造函数中可以添加一些成员,可以在构造函数本身上添加,也可以在构造函数内部的this上添加....构造函数原型prototype 构造函数通过原型分配的函数是所有对象所共享的....JavaScript规定,每一个构造函数都有一个prototype属性,指向另一个对象.注意这个prototype就是一个对象,这个对象的所有属性和方法,都会被构造函数所拥有....对象原型__proto__ 对象都会有一个属性__proto__指向构造函数的prototype原型对象,之所以我们对象可以使用构造函数prototype原型对象的属性和方法,就是因为对象有__proto...constructor构造函数 对象原型和构造函数的原型对象里面都有一个属性constructor属性,constructor我们称为构造函数,因为它指回构造函数本身 如果我们直接打印Star.prototype.constructor

    45710

    简单说 eval 函数

    说明 我觉得eval( )函数是一个比较有趣的函数,虽然我平常基本用不到它。但我们还是来说说吧! eval( ) 函数可计算某个字符串,并执行其中的的 JavaScript 代码。...就是说,有一段字符串,把它放在eval()中就可以当 JavaScript代码执行了。...加上圆括号的目的也就是让eval( )函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。...('fn_'+num)(); obj对象有一个number属性,它的值是随机的,要根据这个值,去决定执行哪个函数,这里用eval( ) 函数解决了这个问题,当然,这并不是唯一的解决方案。...而eval( )函数还是有点缺点的 1、可读性不好 2、不容易调试 3、性能比较低 总结 相信大家已经明白eval( )函数的用法,它就是能把字符串当JavaScript代码执行的一个函数

    1.2K10

    【JavaScript】原型与原型链

    实际上,这个prototype对象就是通过调用构造函数创建的对象的原型,使用原型对象的好处是,在它上面定义的属性和方法可以被所有实例对象共享。...理解原型 无论何时,只要创建一个函数,就会按照特定的规则为这个函数创建一个prototype属性(指向原型对象)。...每次调用构造函数创建一个新的实例,这个实例内部的[[prototype]]指针就会被赋值为构造函数的原型对象。...JavaScript中没有访问这个[[prototype]]特性的标准方式,但Firefox、Safari、Chrome会在每个对象上暴露_proto_属性,通过这个属性可以访问对象的原型。...关键在于理解这一点:实例与构造函数原型之间有直接的联系,但实例与构造函数之间没有。

    46920

    JavaScript原型链继承与盗用构造函数继承

    ---- theme: channing-cyan 这是我参与8月更文挑战的第6天,活动详情查看:8月更文挑战 昨天我们讲解了原型和原型链,今天我们说一下继承,顺便再重温一下原型链 什么是继承 继承这个词比较容易理解...原型链继承 原型链继承是js中的主要继承方式,它的基本思想就是通过原型继承多个引用类型的属性和方法。...对于属性和方法一直会持续到原型链末端 原型链虽然是比较强大的继承实现工具,但是它里面所有的引用值都是实例间共享的,而且子类不能向父类传参,一般原型链也不会被单独使用,我们可以通过盗用构造函数配合来解决这些问题...盗用构造函数 盗用构造函数有时候也被一些人叫做“对象伪装”或“经典继承”。这个思路很简单,在字类构造函数中调用父类构造函数。我们可以用.call()和.apply()将父类构造函数引入子类函数。...盗用构造函数也有一定的问题 1、只能继承父类构造函数的属性。 2、无法实现构造函数的复用。(每次用每次都要重新调用) 3、每个新实例都有父类构造函数的副本,臃肿。

    57120

    JavaScript原型、原型链及原型链污染

    在javascript中一切皆对象,因为所有的变量,函数,数组,对象 都始于object的原型即object.prototype。...0x01 JavaScript原型 一、对象和函数 在学习原型和原型链之前,首先一定要搞清楚对象和函数到底有什么区别和联系: “对象是由函数创建的,而函数又是一种对象。”这样一句话要深刻记忆。...我们都知道JavaScript可以在浏览器中使用“F12”打开的控制台中输入JavaScript代码进行执行,但也要知道其实在浏览器中已经内置了几个全局函数可供随时调用,如:Number()、String...0x02 JavaScript原型链 其实当认真理解完上面的内容,原型链的概念就基本清楚了,以下总结出几点: 1-从上面的代码中可以看到,创建person对象虽然使用的是由构造函数Person创建,但是对象创建出来之后...0x03 JavaScript原型链污染 在看懂原型链的那几点内容后,其实就应该可以理解什么是原型链污染了,就是修改其构造函数的原型中的属性值,使其他通过该构造函数实例出的对象也具有该属性值。

    1.2K10

    JavaScript深入原型到原型链

    是这个函数的原型吗? 其实,函数的prototype属性指向了一个对象,这个对象正是调用该构造函数而创建的实例的原型,也就是这个例子中的person1和person2的原型。 那么什么是原型呢?...你可以这样理解:每一个JavaScript对象(null除外)在创建的时候就会与之关联另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型”继承”属性。...既然实例对象和构造函数都可以指向原型,那么原型是否有属性指向构造函数或者实例呢?...《你不知道的JavaScript》中的话,就是:继承意味着复制操作,然而JavaScript默认并不会复制对象的属性,相反,JavaScript只是在两个对象之间创建一个关联,这样,一个对象就可以通过委托访问另一个对象的属性和函数...深入系列 JavaScript深入系列预计写十五篇左右,旨在帮大家捋顺JavaScript底层知识,重点讲解如原型、作用域、执行上下文、变量对象、this、闭包、按值传递、call、apply、bind

    57020

    浅谈JavaScript原型和原型链

    ---- theme: channing-cyan 这是我参与8月更文挑战的第5天,活动详情查看:8月更文挑战 前言 昨天说的构造函数的小问题,我们可以用原型模式来解决,我们可以先看一下(工厂函数和构造函数...,我们可以看到这样定义之后,构造函数创建的新对象仍然拥有相应的属性和方法,使用这种原型模式定义的属性和方法是所有的实例共享的,要了解这个的话,我们必须先理解原型。...理解原型 在javascript中,无论何时只要创建一个函数,就会给这个函数函数创建一个特殊的属性叫作原型(prototype),在默认情况下,所有原型对象都会自动获得一个名为 constructor的属性...构造函数还可以给原型对象添加其他属性和方法。...); //Object 构造函数有一个prototype属性引用其原型对象,而这个原型对象也有一个 constructor 属性在引用这个构造函数,换句话说,两者循环引用:我们打印一下他们 console.log

    36420

    JavaScript核心概念-原型、原型链

    原型 我们先使用构造函数创建一个对象。...是这个函数的原型吗? 其实,函数的prototype指向了一个对象,这个对象就是正在调用该构造函数而创建的实例的原型,也就是这个例子中的person1的原型。 proto 那什么是原型呢?...可以这样理解 , 每个JavaScript对象(null除外)在创建的时候都会关联另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型继承属性。...__proto__ === Person.prototype); // true 既然实例对象和构造函数都可以指向原型,那么原型是否有属性指向构造函数或实例对象呢?...constructor 指向实例的属性倒是没有,但是指向构造函数的属性是有的,这就要介绍到constructor了 ,每个原型都有一个constructor属性指向关联的构造函数。

    69810

    Javascript的原型与原型链

    的原型等于Function的原型链,在ECMAScript5.1的规范中是如此说明的:Function的prototype是一个函数对象,他内部的[[prototype]]属性值是标准内置的Object...因为是对象,所以没有构造函数,也没有自己的内置原型对象(prototype属性)。但还是有原型链的,他的__proto__指向Object的prototype。...2.2、总结 Function是函数(类)的基础原型 Object是对象的基础原型 运行时创建一个对象,会将构造器的prototype属性引用复制给对象的__proto__上,这里的创建一个对象,只能是...在Child的构造器中用Call执行Parent的构造器,实例构造器的继承执行(顺序执行父类、子类的构造函数)。...ES5中对子类的prototype进行赋值后,还需要重定向prototype.constructor到子类的构造函数。

    974101

    javascript 原型及原型链详解

    我们创建的每个函数都有一个 prototype (原型)属性,这个属性是一个指针,指向一个原型对象,而这个原型对象中拥有的属性和方法可以被所以实例共享。...无论什么时候,只要创建了一个新函数,就会根据一组特定的规则为该函数创建一个 prototype属性,这个属性指向函数的原型对象。...在默认情况下,所有原型对象都会自动获得一个 constructor(构造函数)属性,这个属性包含一个指向 prototype 属性所在函数的指针。...当调用构造函数创建一个新实例后,该实例的内部将包含一个指针(内部属性),指向构造函数的原型对象。ECMA-262 第 5 版中管这个指针叫 [[Prototype]] 。...不过,要明确的真正重要的一点就是,这个连接存在于实例与构造函数的原型对象之间,而不是存在于实例与构造函数之间。

    84180
    领券