面向对象

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. SQL中关于Join、Inner Join、Left Join、Right Join、Full Join、On、 Where区别

    前言: 今天主要的内容是要讲解SQL中关于Join.Inner Join.Left Join.Right Join.Full Join.On. Where区别和用法,不用我说其实前面的这些基本SQL语 ...

  2. csdn阅读更多需要注册登录csdn

    csdn目前设置每日使用5次后必须登录才能看到阅读更多的内容,异常恶心.因此搜罗了方法去解决这个问题 方法一 打开想看的csdn后,在console里边执行以下代码: $("div.arti ...

  3. centos7开放端口和防火墙设置

    centos7开放端口和防火墙设置. 查看防火墙状态: firewall-cmd --state 如果显示: not running 打开防火墙服务: systemctl start firewall ...

  4. final 关键字与安全发布 多线程中篇(十三)

    final的通常理解 在Java中,final关键字可以用来修饰类.方法和变量(包括成员变量和局部变量) 大家应该都知道final表示最终的.最后的含义,也就是不能在继续 修饰类表示不能继承,修饰方法 ...

  5. 基于Raft深度优化,腾讯云金融级消息队列CMQ高可靠算法详解

    背景介绍 分布式系统是指一组独立的计算机,通过网络协同工作的系统,客户端看来就如同单台机器在工作.随着互联网时代数据规模的爆发式增长,传统的单机系统在性能和可用性上已经无法胜任,分布式系统具有扩展性强 ...

  6. 第一课《.net之--泛型》

    今天我来学习泛型,泛型是编程入门学习的基础类型,从.net诞生2.0开始就出现了泛型,今天我们开始学习泛型的语法和使用. 什么是泛型? 泛型(generic)是C#语言2.0和通用语言运行时(CLR) ...

  7. 【MQ】消息队列及常见MQ比较

    一.什么是消息队列 我们可以把消息队列比作是一个存放消息的容器,当我们需要使用消息的时候可以取出消息供自己使用.消息队列是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能和削峰. ...

  8. Android App渗透测试工具drozer,Qark,Androguard

    一. drozer简介 drozer(以前称为Mercury)是一款Android安全测试框架. drozer允许您通过承担应用程序的角色并与Dalvik VM,其他应用程序的IPC端点和底层操作系统 ...

  9. Android 里的adb命令

    ADB的全称为Android Debug Bridge,就是起到调试桥的作用. adb调试手机需要把usb调试打开 Android studio模拟器有的也要把模拟器usb调试打开,工具要灵活运用, ...

  10. python进程、进程池(二)代码部分

    第一种创建进程的方式: from multiprocessing import Process def f(name): print(name,"在子进程") if __name_ ...