当前位置: 首页 > news >正文

《Javascript高级程序设计 (第三版)》第五章 引用类型

Function类型

没有重载

声明了两个同名函数,而结果则是后面的函数覆盖了前面的函数。

var addSomeNumber = function (num){
    return num + 100;
};
addSomeNumber = function (num) {
    return num + 200;
};
var result = addSomeNumber(100); //30

函数声明与函数表达式

  • 函数声明:
    析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问),进行声明提升到源代码树的顶部

alert(sum(10,10));
function sum(num1, num2){
    return num1 + num2;
}
  • 函数表达式:
    在执行到函数所在的语句之前,变量 sum 中不会保存有对函数的引用。

alert(sum(10,10)); // "unexpected identifier"
var sum = function(num1, num2){
    return num1 + num2;
}

作为值的函数

函数名本身就是变量,所以函数也可以作为值来使用。也就是说,不仅可以 像传递参数一样把一个函数传递给另一个函数,而且可以将一个函数作为另一个函数的结果返回

函数内部属性

  • arguments:
    它是一个类数组对象,包含着传入函数中的所有参数

  • callee
    该属性是一个指针,指向拥有这个 arguments 对象的函数。

function factorial(num){
    if (num <=1) {
        return 1;
    } else {
        return num * arguments.callee(num-1)
    }
}
无论引用函数时使用的是什么名字,都可以保证正常完递归调用。
  • this
    this引用的是函数据以执行的环境对象

window.color = "red";
var o = { color: "blue" };
function sayColor(){
    alert(this.color);
}
sayColor(); //"red"
o.sayColor = sayColor;
o.sayColor(); //"blue"

函数属性和方法

  • length
    表示函数希望接收的命名参数的个数。

function sayName(name){
    alert(name);
}
function sum(num1, num2){
    return num1 + num2;
}
function sayHi(){
    alert("hi");
}
alert(sayName.length); //1
alert(sum.length); //2
alert(sayHi.length); //0
  • prototype
    保存它们所有实例方法的真正所在=

基本包装类型

每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而让我们 能够调用一些方法来操作这些数据。

var s1 = "some text";
var s2 = s1.substring(2);
  • 不能手动添加属性
    new 操作符创建的引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中。而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即被销毁

var s1 = "some text";
s1.color = "red";
alert(s1.color); //undefined

单体内置对象

Global对象

  • URL编码方法
    encodeURI():不会对本身属于 URI 的特殊字符进行编码,例如冒号、正斜杠、问号和井字号;
    encodeURIComponent():它发现的任何非标准字符进行编码。

  • eval方法

  • Global 对象的属性

  • window 对象

Math对象

http://www.w3school.com.cn/js...

相关文章:

  • Spring AOP 1
  • 如何启动Nunit的调试功能
  • ELK日志分析系统实战(一)安装和部署
  • H3C路由器登录管理
  • Laravel5.1 条件性验证
  • Redhat7 增加swap分区
  • 进程调度器--UNIX还是是老大
  • 监控apache脚本原理
  • JAVA与.NET的相互调用——利用JNBridge桥接模式实现远程通讯
  • 13.liunx机器互相登录
  • nginx配置虚拟主机
  • mysql日志文件在哪
  • 21天让你成为Horizon View高手—Day7:配置View Connection Server
  • c用libcurl库实现https下get/post网络通信
  • bootstrap标题效果
  • [译]如何构建服务器端web组件,为何要构建?
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • 345-反转字符串中的元音字母
  • C++类中的特殊成员函数
  • classpath对获取配置文件的影响
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • leetcode讲解--894. All Possible Full Binary Trees
  • PAT A1120
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • 从输入URL到页面加载发生了什么
  • 工作中总结前端开发流程--vue项目
  • 构造函数(constructor)与原型链(prototype)关系
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 基于axios的vue插件,让http请求更简单
  • 蓝海存储开关机注意事项总结
  • 那些年我们用过的显示性能指标
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 智能合约Solidity教程-事件和日志(一)
  • Mac 上flink的安装与启动
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • ​2021半年盘点,不想你错过的重磅新书
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (2)nginx 安装、启停
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (分享)自己整理的一些简单awk实用语句
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (算法)Travel Information Center
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • ../depcomp: line 571: exec: g++: not found
  • .naturalWidth 和naturalHeight属性,
  • .NET 设计模式初探
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • [bzoj1006]: [HNOI2008]神奇的国度(最大势算法)
  • [BZOJ4016][FJOI2014]最短路径树问题
  • [C#7] 1.Tuples(元组)
  • [Flexbox] Using order to rearrange flexbox children
  • 多线程(5)多线程同步之临界区(windows实现)
  • 优秀的开源Java爬虫项目
  • js中的referrer使用,返回上一页
  • 多线程(7)多线程同步之互斥量(windows实现)
  • MongoDB数据删除后的磁盘空间释放
  • TCP/IP协议六:通俗易懂说网络协议-ARP
  • Oracle 列转行函数 Listagg()
  • TCP/IP协议八:通俗易懂说网络协议-IP地址,掩码,私有地址等
  • innerhtml和innertext用法以及innerHTML与innertext的区别
  • Kafka Client配置JAAS的几种方式