之前的作业:

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

链式调用:

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

 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. ManagementEventWatcher throws ManagementException with call to Stop()

    参考网址:https://stackoverflow.com/questions/46100105/managementeventwatcher-throws-managementexception- ...

  2. spring cloud 知识总结

    ### 单体应用存在的问题 - 随着业务的发展,开发变得越来越复杂.- 修改.新增某个功能,需要对整个系统进行测试.重新部署.- 一个模块出现问题,很可能导致整个系统崩溃.- 多个开发团队同时对数据进 ...

  3. Leaflet 中 删除 一个 标记(Marker)

    参考:https://blog.csdn.net/qq_34922009/article/details/81184004 下面是我在Leaflet官方文档所找到的答案 ,希望可以帮助到大家 比如以下 ...

  4. 嵌入式Linux的启动过程

    1.了解 Linux 最初是由瑞典赫尔辛基大学的学生 Linus Torvalds在1991 年开发出来的,之后在 GNU的支持下,Linux 获得了巨大的发展.虽然 Linux 在桌面 PC 机上的 ...

  5. mac下编译安装grafana

    下载grafana源码 从grafana git 仓库下载指定的分支. 编译后端 我下载的时候,grafana的最新release是7.3.7,其需要安装go 1.15版本 生成可执行文件 进入项目根 ...

  6. The Second Week lucklyzpp

    The Second Week  文件通配符模式  在Linux系统中预定义的字符类 1.显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录 2.复制/etc目录下 ...

  7. Go依赖包管理--间接依赖

    目录 1.indirect含义 1.2 直接依赖未启用 Go module 1.2 直接依赖 go.mod 文件不完整 2.总结 1.indirect含义 在使用 Go module 过程中,随着引入 ...

  8. java一些工具类

    import java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; import java. ...

  9. sql函数大全

    sql函数大全 一.内部函数 1.内部合计函数 1)COUNT(*) 返回行数 2)COUNT(DISTINCT COLNAME) 返回指定列中唯一值的个数 3)SUM(COLNAME/EXPRESS ...

  10. C#窗体间互相传值

    Demo窗体图片,Form1 Demo窗体图片,Form2 公共委托 using System; namespace _DeleFrm{  public class Dele  {    public ...