之前的作业:

提示: 在开发的时候尽量在函数内部将作用都给调用好,在外部就能够直接使用

链式调用:

正常这样是不行的,因为没有具体返回值:

 return 具体的对象,这样的才是链式操作,jquery基本原理也是这样的,但是比这个中间穿插了很多的操作

 使用中括号的形式去能够动态的得到构造函数的属性:

 使用中括号的形式,有点像php

最早的js引擎是没有点语法的,都是obj[‘name’]

 后来有点语法的时候,进行了一个处理,

objk.name ->obj['name'],

大部分浏览器都是这样进行处理的,v8引擎不一定,因为v8是转化成机器码

对象枚举:一组有共同特征的对象称之为枚举

提到枚举必然会想到遍历

遍历:遍历是按顺序一个一个去获取一组信息,在一组信息内,一个一个的去获取其信息的过程

在js中有遍历就会有枚举

for in 打印对象:

为什么无法打印car.key的问题:

因为car.key在js引擎内部会转化成,car['key']

 所以要去打印car的key要这样car[key],

是这样的去遍历对象的

for in  打印数组:

hasOwnProperty()方法:

你构造出来的对象在原型链上面只要是你自己设置的都能打印出来:

 如果你不想要去打印原型链上自己定义的属性,那么这个hasOwnPropety()就有作用了:

hasOwnPropety这个方法返回值是一个boolean值,能够区分是否是该构造对象本身的属性:作用为排除你自定义的原型上的属性

 

 ‘displacement' in car的隐式转化,具体如下图

 hasOwnProperty是排除自定义原型的属性和方法的,

但是in是不排除原型的属性和方法的

instanceof (无比重要,大公司面试必出):

A instanceof Car

主要是针对A对象里面的原型和B对象的原型链上是否有重合的都会打印true;

 用来判断后端返回给我的是什么类型:

 进行简化:

函数内部this指向问题:

在普通的函数中,使用的this在没有实例化函数的时候是指向window的,

如果实例化函数这里this就指向实例化函数

关于实例化对象的this问题:

  call和apply的使用参数的问题:

什么时候需要传值:

如果借用的对象需要参数那么我们必须要给一个形参写在apply中

 this:

callee和caller的方法:

对于形参的arguments.callee就是该方法,那么就会有arguments.callee.length方法

 arguments.callee.length放回的是形参列表对于的长度,arguments.length表示的是实参实际的长度:

argument.callee在那个函数里面就代表哪个函数:

 递归的另一种写法:

正常递归

使用arguments.callee来进行递归:

总结:

argument.callee(实参列表的一个属性)递归:

使用场景: 加载的是时候就给 某个值赋值,如通过ajax获取之后通过一系列的处理,希望一出来就处理好,然后马上赋值给变量

caller:调用函数的函数引用(在实际开发是没有什么用处的,在严格模式下还会报错,但是面试题可能会出):

在使用test1的时候调用了test2,test2.caller表示的就是test1这个函数(返回当前被调用的函数引用)

下面都是面试题:

第一道阿里的笔试题:

2.

JS的typeof可能返回的值有哪些? Object/boolean/number/string/undefined/function

3.这题考AO

4.

没执行

执行后

5.

打印true的哪些:

6.

7.

链式调用+对象属性与遍历+this指向+caller/callee的更多相关文章

  1. ES6学习--对象属性的遍历

    ES6一共有5种方法可以遍历对象的属性. (1)for...in for...in循环遍历对象自身的和继承的可枚举属性(不含Symbol属性). (2)Object.keys(obj) Object. ...

  2. JavaScript 对象属性的遍历

    ES6一共有5种方法可以遍历对象的属性. (1)for...in for...in循环遍历对象自身的和继承的可枚举属性(不含Symbol属性). (2)Object.keys(obj) Object. ...

  3. Java 对象属性的遍历

    package com.cn.mybatis.test; import java.io.IOException; import java.io.InputStream; import java.lan ...

  4. ECMAScript5之JSON对象属性的遍历顺序

    测试浏览器 Chrome.Safari 一 键可以用parseInt解析成整数的,按数值升序顺序. var intObj = { '3.3' : 3.3, '2' : 222, '1' :111 } ...

  5. js之oop <二> 对象属性

    js中对象属性可以动态添加和删除.删除对象属性用delete关键字. function obj(){ } var oo = new obj(); oo.a = "a"; oo.b ...

  6. js for in 获得遍历数组索引和对象属性

    for in 遍历对象属性 获取的是对象的属性名 var person ={ name:"admin", age:"21", address:"sha ...

  7. JavaScript中对象的属性:如何遍历属性

    for/in 语句循环遍历对象的属性. js中获取key得到某对象中相对应的value的方法:obj.key js中根据动态key得到某对象中相对应的value的方法有二: 一.var key = & ...

  8. ES6 之 对象属性的可枚举性和遍历

    1.Object.getOwnPropertyDescriptor() 解释:获取对对象属性的描述对象. let obj = { foo: 123 }; console.log(Object.getO ...

  9. JavaScript(2)——对象属性、原型与原型链

    对象属性.原型与原型链 哈哈哈,我的第二篇博客哟,说的是对象属性.原型与原型链.可能这些只是某些小点串联起来的,逻辑性没有很强.所以会对文章的可读性和理解性带来一些困扰.不过,今天我又前进了那么一小步 ...

随机推荐

  1. 痞子衡嵌入式:i.MXRT中不支持DQS的FlexSPI引脚组连接Flash下载与启动注意事项

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT中不支持DQS的FlexSPI引脚组连接Flash下载与启动注意事项. 最近痞子衡在支持一个印度客户,这个客户项目主芯片选择 ...

  2. 有关SQL注入的一些小知识点

    1.判断注入点: 本质原理是找一个需要后台处理后,提交给数据库的点,我理解为用户可以控制并输入后台数据库的变量,比如我们DVWA SQL injection 的ID  ,我们可以通过闭合单引号,#注释 ...

  3. 51单片机—使用PWM对直流电机调速

    文章目录 - 什么是PWM - PWM是怎么对直流电机进行调速的 - 通过定时器中断实现PWM调速 - 上代码 - 什么是PWM PWM(脉宽调制),是靠改变脉冲宽度来控制输出电压,通过改变周期来控制 ...

  4. comm tools

    RTL:寄存器传输级别 LRM:语言参考手册 FSM:有限状态机 EDIF:电子数据交换格式 LSO:库搜索目录 XCF:XST 约束条件 1. par -ol. high  命令总是 '-'开头,参 ...

  5. C#/VB.NET 将PDF转为OFD

    OFD,全称Open Fixed-layout Document ,是一种可存储.读取以及编辑的国家标准版式的电子文档格式,属于中国的一种自主文件格式,在安全性上有可靠保证.为突破国外技术在我们软硬件 ...

  6. JavaWeb单体项目的分层设计与实现

    1.概述 为什么要把一个完整的项目(Project)按层拆分成多个模块(Module)? 1)使项目层次更加的清晰: 2)提高代码的复用性: 3)细化分工: 4)解耦. 是不是听起来很高大尚,今天就简 ...

  7. 教你使用ApiPost中的全局参数和目录参数

    前面的示例中,我们都是在单一接口中填入不同的请求header.query.body参数.但在实际项目中,对于一批接口,往往具有相同的请求参数.此时,我们可以利用全局参数或者目录参数实现. 例如:常见的 ...

  8. mysql开启远程访问权限的设置

    MySql-Server 出于安全方面考虑默认只允许本机(localhost, 127.0.0.1)来连接访问. 所以必须给root修改可以远程访问的权限 1.在连接服务器后,操作mysql系统数据库 ...

  9. 如何在指定的地址上创建C++对象

    如果已经掌握在静态存储区上创建对象的方法,那么可以扩展一下,可以在任意地址上创建C++对象. 解决方案:-在类中重载new/delete操作符-在new的操作符重载函数中返回指定的地址-在delete ...

  10. SqlServer 数据库备份到服务器,及删除

    一:备份 1.在数据库管理下 新建一个维护计划,然后下图中点击 标红的按钮 新建计划作业,建好后就可以 SqlServer 代理下的作业里可以看到刚新建的作业. 2.SqlServer 代理下的作业  ...