当前位置: 首页 > 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标题效果
  • 3.7、@ResponseBody 和 @RestController
  • css的样式优先级
  • flutter的key在widget list的作用以及必要性
  • Hibernate最全面试题
  • LeetCode算法系列_0891_子序列宽度之和
  • ng6--错误信息小结(持续更新)
  • uni-app项目数字滚动
  • 从零开始学习部署
  • 使用Gradle第一次构建Java程序
  • 数据可视化之 Sankey 桑基图的实现
  • #1014 : Trie树
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • $L^p$ 调和函数恒为零
  • (20050108)又读《平凡的世界》
  • (二)hibernate配置管理
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (三)模仿学习-Action数据的模仿
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (算法)前K大的和
  • (已解决)什么是vue导航守卫
  • (转) Face-Resources
  • (转)EOS中账户、钱包和密钥的关系
  • (转)setTimeout 和 setInterval 的区别
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (转)大型网站的系统架构
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • @Autowired和@Resource的区别
  • [ C++ ] STL---stack与queue
  • [ 蓝桥杯Web真题 ]-布局切换
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧
  • [AIGC] Nacos:一个简单 yet powerful 的配置中心和服务注册中心
  • [Android]如何调试Native memory crash issue
  • [AX]AX2012开发新特性-禁止表或者表字段
  • [BZOJ 4598][Sdoi2016]模式字符串
  • [BZOJ2850]巧克力王国
  • [C#7] 1.Tuples(元组)