ES5-13 对象属性遍历、this、callee、caller
链式调用
- 在每个函数内部return this
访问对象属性
- 点语法
[]
中括号内是字符串或是变量
数组是特殊的对象
对象属性遍历
- for in(遍历对象或数组) - 不必再用Object.keys那么麻烦了
for(var key in obj){console.log(obj[key])// obj.key返回undefined// 因为js引擎会转换为obj['key']
}
- instanceof
console.log([] instanceof Array) // true
console.log([] instanceof Object) // true
console.log({} instanceof Object) // true
- 类型判断
var a = [] || {}
console.log(a.constructor)
console.log(a instanceof Array)
console.log(Object.prototype.toString.call(a))
// 实际运用时先缓存 var strFn = Object.prototype.toString// Object.prototype = {// toString:function(){// this.toString() // this → a
// }
// }
函数内部的this
- 只要没有实例化构造函数,函数内部的this指向window
- 全局范围的this指向window
- 构造函数内this指向
arguments.callee - 正在被执行的函数对象
function test(a, b, c, d) {console.log(arguments.callee.length)
}
test() // 4
- 应用,在自启动函数中使用递归,且不需要函数名
var res = (function (n) {if (n <= 1) {return 1}return n = n + arguments.callee(n - 1)
})(10);
console.log(res) // 55
caller - 当前函数的调用者
- 严格模式下,使用arguments、callee、caller会报错
dad()
function dad() {child()
}
function child() {console.log('child的调用者', child.caller)
}
练习
- typeof的返回值有几种:6种
- 如何不用isNaN判断NaN(转换成字符串)
- 引用值对比的是地址(这个是比较,不是隐式类型转换)
- 函数test的AO有a
apply、call传null,this指向是什么
function Test(name) {this.name = name
}
function Test2() {Test.call(null, '测试')
}
console.log('obj', new Test2())
ES5-13 对象属性遍历、this、callee、caller相关推荐
- 2020.10.25 对象的创建 利用构造函数创建对象 遍历对象属性 遍历函数属性和属性数值for in 内置对象
输出遵循变量的值就近原则 对象创建方法 : 第一种 var obj = { uname:'dengzhu',//属性的创建,多个属性创建之间用逗号隔开 sex: male; sayHi: functi ...
- 对象遍历php,PHP对象的遍历
Java基础知识强化之集合框架笔记46:Set集合之TreeSet存储自定义对象并遍历练习2(自然排序:Comparable) 1. TreeSet存储自定义对象并遍历练习2: (1)Student. ...
- 201506230818_《JavaScript权威指南(第六版)——callee和caller、对象属性用作实参、自定义函数属性》(P175-180)...
1. callee 正在执行的函数.使用方法:arguments.callee... caller 正在调用执行函数的函数. 2.对象属性用作实参,形如:function fn(arg) { var ...
- JavaScript 对象属性作实参以及实参对象的callee属性
参考自<<JavaScript权威指南 第6版>> /* * 将对象属性用作实参, 从而不必记住参数的顺序. */ function arraycopy(from,from_s ...
- ES5新增对象的属性和方法
随笔:1.某一技术为什么而生 2.解决了什么问题 3.如何使用 4.给出代码实例 ES5新增对象的方法 一.冻结对象的freeze()方法(分为深冻结和浅冻结) var obj1 ={a:'111 ...
- 遍历对象属性_细说JS遍历对象属性的N种方法
本人详细介绍了JS遍历对象N种方法,欢迎关注收藏. 遍历对象属性有五种方法,下图为一个场景对比图. 可以注意到两点: 只有for ... in 才可以遍历原型链属性,且只能遍历可枚举属性. Objec ...
- js for in遍历对象_JS中轻松遍历对象属性的几种方式
自身可枚举属性 Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for...in 循环遍历该对象时返回的顺序一致 .如果对象的键-值都 ...
- java遍历一个类的属性名,java遍历对象属性
java对象动态添加属性,Class对象和Java反射机制,java遍历对象属性,js对象动态添加属性 java 对象动态添加属性,Class对象和Java反射机制,java遍历对象属性,js对象动态 ...
- 遍历java对象属性_[Java教程]遍历对象属性
[Java教程]遍历对象属性 0 2016-09-12 13:00:03 初始化对象:var person = function(name){ this._name = name;}var grand ...
最新文章
- css层叠样式表(一)
- haar 人脸检测跟踪源码整理
- Salesforce平台入门
- 丰农控股 CIO 王轶枭:万亿级农资市场,神策数据助力大丰收筑就数据驱动核心竞争力
- Django从理论到实战(part24)--在模板中访问静态文件
- iOS开发UI篇—核心动画(基础动画)
- jsoup解析百度音乐
- .Net中消除Dll中的dependency
- mysql mmm安装管理详解
- 【图文详解】入职必备——SVN使用教程
- 工作日志之MTK刷机
- 大一计算机基础教程期末考试,大一大学计算机基础教程期末考试题.doc
- 唐山初中计算机考试知识点,画法几何点知识点及考点.doc
- Python华氏摄氏度的转换
- 微信公众号通知和服务通知
- 如何让 ABAP 报表在后台作业的模式下运行
- 前端道路上,买书的那些事儿
- 关于深度图/视差图转为伪彩色的方法
- uniapp基础介绍
- 学习记录664@项目管理之项目进度管理