面向对象

1.构造函数里的属性怎么看?看this,谁前面有this谁就是属性。

num不是属性,是私有作用域下的私有变量。

2.如何查找面向对象中的this

  1.构造函数的this指向实例对象

2.如果是方法中的this?

  (1)找到this  在调用方法时看方法前面的 "." 是谁,this就指向谁

  (2)替换this  将this换成你找到的那个结果

  (3)精确查找  用原型链接查找模式去分析

3.构造函数的返回值问题

  构造函数也是函数,每个函数都有返回值,构造函数的回值是this

通过 "." 实现多个方法  我们把他叫链式写法。

实现原理:每个方法使用完毕之后,不仅可以得到下要结果还需要把当前实例对象返回,才可以实现 链式写法

4.对象分析

以后我们使用 内置方法,出现内置方法报错

1.方法名写错

2.内置方法的归属出错

5.原型的批量添加和直接对象添加的区别

如果是批量添加属性,没有改变原型的内存地址(浏览器开辟的)

如果是以对象形式添加,就会改变原型的内存地址,浏览器开辟的就被销毁

6.怎样给内置对象添加方法

  如果给内置类的原型添加方法,使用对象形式添加,不起作用

  Array.prototype={sun:function...} xxx错的  浏览器会保护内置对象的原型内存地址

不让人修改,只能使用批量的形式添加方法

Array.prototype.sun=function...

拷贝

  1.var obj={}   var obj2=obj

严格来说这个就是将obj的内存地址赋值给obj2

2.浅拷贝 其实就是将一个对象的属性一个一个的赋值到另一个对象中主要针对第一层属性。

借助 for in

3.深拷贝  如果对象中的属性又是一个引用数据类型,浅拷贝还是把后面的引用引用数据类型的地址赋值给空对象的一个属性,深拷贝,将属性值也一个一个的的遍历赋值

var obj={
  nam:"zhangsan",
  age:20,
  ss:[45,55,65],
  ssobj:{
   sex:"nan",
   haha:{
    "ss":23,
    dd:56
   },
   xixi:{
    kk:1000,
    ww:100
   }
  }
 }
 var obj2={}
 
 function fn(oldobj,newobj){
  for(var key in oldobj){
   var teim=oldobj[key]  //遍历每一个对象的属性值
   if(teim instanceof Array){  //数组
    newobj[key]=[]
    fn(teim,newobj[key])  //递归
   }else if(teim instanceof Object){  //对象
    newobj[key]={}
    fn(teim,newobj[key])
   }else{  //基本类型
    newobj[key]=teim
   }
   
  }
  
 }
 fn(obj,obj2)
 console.log(obj2)

作者:晋飞翔

QQ(微信同步)318080891

2019/1.7 js面向对象笔记的更多相关文章

  1. JS面向对象笔记二

    菜单导航,<JS面向对象笔记一>,  参考书籍:阮一峰之<JavaScript标准参考教程> 一.构造函数和new命令 二.this关键字 三.构造函数和new命令 四.构造函 ...

  2. js面向对象笔记

    JavaScript 私有成员实现 到此为止,如果您任然对 JavaScript 面向对象持怀疑态度,那么这个怀疑一定是,JavaScript 没有实现面向对象中的信息隐藏,即私有和公有.与其他类式面 ...

  3. 前端学习:JS(面向对象)代码笔记

    前端学习:JS(面向对象)代码笔记 前端学习:JS面向对象知识学习(图解) 创建类和对象 创建对象方式1调用Object函数 <body> </body> <script ...

  4. ES6学习笔记(三):教你用js面向对象思维来实现 tab栏增删改查功能

    前两篇文章主要介绍了类和对象.类的继承,如果想了解更多理论请查阅<ES6学习笔记(一):轻松搞懂面向对象编程.类和对象>.<ES6学习笔记(二):教你玩转类的继承和类的对象>, ...

  5. 5月17日上课笔记-js面向对象

    二.js面向对象 js创建对象: var 对象名称 = new Object(); person.name = "小明"; //姓名 person.age = 18; person ...

  6. js面向对象学习 - 对象概念及创建对象

    原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...

  7. 前端学习:JS面向对象知识学习(图解)

    前端学习:JS面向对象知识学习(图解) 前端学习:JS(面向对象)代码笔记 JS面向对象图解知识全览 创建类和对象 方式1:使用Object()函数 方式2:使用自变量 方式3:使用工厂函数 创建多个 ...

  8. JavaScript---正则使用,日期Date的使用,Math的使用,JS面向对象(工厂模式,元模型创建对象,Object添加方法)

    JavaScript---正则使用,日期Date的使用,Math的使用,JS面向对象(工厂模式,元模型创建对象,Object添加方法) 一丶正则的用法 创建正则对象: 方式一: var reg=new ...

  9. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

随机推荐

  1. ceph 常见问题百科全书---luminous安装部署篇

    1. 执行步骤:ceph-deploy new node        机器:centos 7.5   ceph  Luminous版本     源:阿里云 问题: Traceback (most r ...

  2. 基于SpringBoot从零构建博客网站 - 整合lombok和mybatis-plus提高开发效率

    在上一章节中<技术选型和整合开发环境>,确定了开发的技术,但是如果直接这样用的话,可能开发效率会不高,为了提高开发的效率,这里再整合lombok和mybatis-plus两个组件. 1.l ...

  3. linux服务器 jboss-7安装

    jBoss简介 JBoss是一个运行EJB的J2EE应用服务器.它是开放源代码的项目,遵循最新的J2EE规范.从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的J2EE的一个web 操 ...

  4. C语言超级搞笑的代码,冷笑话我们程序员也会讲的啊!

    百年修得足下点击本文 欢迎来到"C语言基础"专题,今天我们放松一天,不学习知识,来看下大千世界的千奇百怪的C语言代码,你见过那些? 1.关于随机数这回事 这个随机数有点意思哦. 2 ...

  5. 300+ Manual Testing and Selenium Interview Questions and Answers

    Manual testing is a logical approach and automation testing complements it. So both are mandatory an ...

  6. Sqlserver 事务处理模板

    USE StuDB GO /****** Object: StoredProcedure [dbo].[proc_live_send_answer_v4] Script Date: 06/20/201 ...

  7. 为什么在STM32F429工程配置中需要预先定义USE_STDPERIPH_DRIVER和STM32F429_439xx?

    如图: 1.查找USE_STDPERIPH_DRIVER,发现这个宏出现在stm32f4xx.h头文件中,并且有如下代码: 也就是说,通过已经定义了USE_STDPERIPH_DRIVER宏加载stm ...

  8. linux 进程概念

    1,pcb:进程控制块结构体:/usr/src/linux-headers-4.15.0-29/include/linux/sched.h 进程id:系统中每个进程有唯一的id,在c语言中用pid_t ...

  9. Ons 让人欲哭无泪问题,官方介绍不详

      订阅不一致导致消费时成功时失败问题: Console下使用.Net SDK 访问队列成功. Windows 服务下使用.Net SDK 访问队列成功.   有时成功,有时则没有任何反应-   解决 ...

  10. windows安装IDEA

    1.安装下载 https://www.jetbrains.com/idea/download/#section=windows 2.服务器激活地址: 39.129.9.34:8888 https:// ...