js的数据类型

  基本数据类型:string   undefined   null   boolean    number

  引用数据类型:object

  二者的区别:

  基本数据类型就是简单的赋值,引用数据类型就是把内存地址赋值给变量

  案例      var a=123

      var b={

      "name":"zhang"

      }

      var c=["ni",23]

      var d=function(){

        console.log(12)

      }

    console.log(a)

  解析:

    

  堆内存:

    就是存放代码块,存放形式有两种,一种是对象以键值对的形式存放,另一种是函数以字符串的形式存放

  引用数据类型的赋值是把引用地址赋给它,在修改属性的时候通过地址查找,然后改掉

  案例:

  var obj1={

    "name":"zhangsan"

    }

  var obj2=obj1

  obj2.name="lisi"

  console.log(obj1)             结果为lisi

  解析:

  

  引用数据类型:将内存地址赋给他,想要修改属性通过地址查找,然后进行修改

  var arr1=[12,56]

  var arr2=arr1

  arr2[0]="lisi"

  console.log(arr1)                     其结果为lisi,56   数组也属于对象类型

  this 研究函数的内部

  在js中函数形式的种类

  1.普通的函数     2.类函数

  对象学习。object

  对象里面数据类型以键值对形式存在

  数据的三种存储方式

  string       " "

  array       [ ]

  json        { }

  object跟json不一样

  引用数据类型如何操作

  1.先通过引用地址去查找堆内存中的代码,然后再去修改

  作用域和内存空间的区别?

  作用域是函数执行的时候产生的fn()函数执行的时候会开辟一个新的内存空间叫栈内存(环境或作用域)。

  数据类型在赋值的时候会开辟一个新的内存空间叫堆内存(存放代码块)。

  相同点:两者都会形成一个内存地址

  单列模式:(就是简单的变量声明)

  var zhang={                            (提示:我们把变量zhang叫命名空间)

    "name":"zhangsan",

    "age":23

    }

  生成对象的单列模式,每个对象都是独立的即便属性起的名字一样,也不会相互干扰,方便现在流行的开发模式“模块化开发”,如果需要使用里面的属性用"."运算符如(zhang.name)或      (zhang["name"]),判断一个属性是不是这个对象的用in运算,如"name" in zhang   如果遍历这个对象用for in   for(attr in zhang){}

  案列:(3中写法)

  var li={

    "name":"lisi",

    "age":24,
    "text":"我不入地狱,谁入地狱"

  }             (标准流)推荐

  var obj=new Object()

  obj.name="cui",

  obj.age=26            (原型)

  var obj={}  

  obj.name="zhang",

  obj.age=27          (简写)

  console.log(li.text)

  console.log("name" in li)

  for(var attr in li){

    console.log(li[attr])

    }

  缺点:不可以批量生产,只能一个个的去创建

  所以就会出现另一种模式:工厂模式(可以批量生产)

  2.工厂模式

  案例:

  function createyifu(name,age){

    var obj={

      "name":name,

      "age":age

    }

    return obj

  }

  var zhang=createyifu("张三",23);

  var li=creatyifu("李四",22);

  console.log(lisi)

  这种形式叫函数封装,

  优势:可以批量生产,减少代码冗余,提高代码的重复利用率(高密度,低耦合)

  缺点:没有继承和多态

  所有的编程语言

  java   c    python     c++.......         都是面对对象的程序设计

  面对对象必须有3大特点

  封装      继承       多态

  所以有出来一种模式,将是最常用的

  3.构造函数来生成对象

  注意事项:1.函数名首字母大写

       2.里面的属性前面必须加this

       3.函数调用的时候必须使用new关键字

  案列:

    function Person(name,age){

      this.name=name,

      this.age=age

      }

    var zhang=new Person("张三",26)

    console.log(zhang)

  我们把Person 叫类(模型种类)把zhang叫实列 (具体到某个)

  万物皆对象:对象的特征有属性(特征)和方法(能做什么)

  字符串类是String

  数组的类是Array

  对象的类是Object    (被称为基类,最大的类,所有的类都可以叫基类)

  

  var zhang为对象实列

  构造函数里的this指向实列对象

  谁调用它,this就指向他的实列对象

  构造函数里有了类和实列的概念并且实列和实列都是独立的个体,我们把它叫实列识别

  构造函数里面的属性都是私有的,各个实列之间都没有公共属性

  为了实列的的对象拥有公共属性,所以js使用了prototype(原型)这个属性,这个属性值是一个对象,我们可以把公共属性放在这个prototype上了

  

  原型分析:

  1.每个函数数据类型(普通函数,类)都有一个prototype(原型)属性,并且这个属性是一个对象数据类型

  2.每一个prototype上都有一个constructor属性,并且这个属性是当前函数或类本身

  3.每一个对象数据类型(实列,普通对象,prototype)都天生具有一个__proto__属性他的属性值是当前实列所属的原型(告诉你来自于哪个类)

  类(函数数据)     实列(对象类型)

  遇到原型就替换掉

  object(基型   没有原型)

  原型链:

  object . attribute 的时候,首先看这个属性是不是私有的,私有的直接使用,如果私有的属性没有就找公有的,如果公有的有就直接使用,没有就按照__proto__找他的类上有没有,直到找到基类object,如果object没有就undefined了,这种查找机制叫原型链

  原型的this要找到原型是谁,然后替换掉this再去查找

  function Person(name,age){

    this.name=name,

    this.age=age

    }

  Person.prototype={

    xx:"hello world",

    say:function(){

      console.log(123)

      }

    }

  var zhang=new Person("zhangsan",23);

  var li=new Person("lisi",20);

  console.log(li)

  解析:

  

  

  

  

  

javascript对象讲解的更多相关文章

  1. 第六章:Javascript对象

    对象是javascript的基本数据类型.对象是一种复合值.它将很多值(原始值 或者其他对象)聚合在一起.可通过名字访问这些值.对象也可以看做是属性的无序集合,每个属性都有一个名/值.属性名是字符串, ...

  2. 微信浏览器内置JavaScript 对象:WeixinJSBridge

    微信公众平台开发 微信公众平台开发模式 企业微信公众平台 微信浏览器 分享到朋友圈 发送给好友 分享到腾讯微博 作者:方倍工作室 原文: http://www.cnblogs.com/txw1958/ ...

  3. 深入浅出 JavaScript 对象 v0.5

    JavaScript 没有类的概念,因此它的对象与基于类的语言中的对象有所不同.笔者主要参考<JS 高级程序设计>.<JS 权威指南>和<JS 精粹> 本文由浅入深 ...

  4. WeixinJSBridge:微信浏览器内置JavaScript 对象

    微信公众平台开始支持前端网页,大家可能看到很多网页上都有分享到朋友圈,关注微信等按钮,点击它们都会弹出一个窗口让你分享和关注,这个是怎么实现的呢?今天就给大家讲解下如何在微信公众平台前端网页上添加分享 ...

  5. 函数可以作为Javascript对象(哈希表)的键吗

    一般Javascript书在讲解对象时,都指出Javascript中的对象可以作为哈希表,存储键值数据.通常情况下,键为字符串,如果键是数字的话,实际上在内部也会转换为字符串. 比如 var o = ...

  6. javascript对象使用总结

    javascript对象使用总结 一.总结 一句话总结:js对象的主要知识点是创建对象和继承,并且创建对象和继承的方法都是逐步层层递进的 创建对象 继承 原型 创建对象 1 <script> ...

  7. JavaScript对象分类

    JavaScript 中的对象分类 我们可以把对象分成几类. 宿主对象(host Objects):由 JavaScript 宿主环境提供的对象,它们的行为完全由宿主环境决定. 内置对象(Built- ...

  8. json与JavaScript对象互换

    1,json字符串转化为JavaScript对象: 方法:JSON.parse(string) eg:var account = '{"name":"jaytan&quo ...

  9. javaScript对象-基本包装类型的详解

    本人按书上的内容大致地把javaScript对象划分成“引用类型”.“基本包装类型”和“内置对象”三块内容. 我们这篇先了解下基本包装类型的详细用法吧! 一.我们先解下相关概念: 1.引用类型的值(对 ...

随机推荐

  1. 【数据库】MFC ODBC(三)

    4.SQL查询 记录集的建立实际上是一个查询过程,SQL的SELECT语句用来查询数据源.在建立记录集时,CRecordset会根据一些参数构造一个SELECT语句来查询数据源,并用查询的结果创建记录 ...

  2. java.lang.IllegalStateException: Zip File is closed

    最近在研究利用sax读取excel大文件时,出现了以下的错误: java.lang.IllegalStateException: Zip File is closed at org.apache.po ...

  3. SWIFT模糊效果

    首先创建一个模糊效果 let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Light) 接着创建一个承载模糊效果的视图let blurView ...

  4. delphi批量存入多媒体字段 遇到内存溢出的坑

    最近delphi做一个小工具其中一个需求要把上W张照片存入数据库多媒体字段. 程序转到1,2W的时候即内在溢出了.最多一次转了3W张照片.很简单的一段代码后来仔细检查发现其中的坑. 下面放上代码 wi ...

  5. GPA

    原题: GPA Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  6. TJU Problem 2857 Digit Sorting

    原题: 2857.   Digit Sorting Time Limit: 1.0 Seconds   Memory Limit: 65536KTotal Runs: 3234   Accepted ...

  7. python海龟绘图

    最近学了python,看了几本书之后,才明白python的强大,python是一种解释型的语言,即每写一行程序就执行一行. 而且在科学计算方面,处理的能力特别的方便. 比如python中的字典dict ...

  8. PAT天梯:L1-019. 谁先倒

    L1-019. 谁先倒 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 划拳是古老中国酒文化的一个有趣的组成部分.酒桌上两人划拳 ...

  9. Django Rest FrameWork 全部API

    Django Rest FrameWork .Requests 请求 客服端发送给服务器的请求 .Responses 响应 rest框架支持响应不同格式的内容 .Views 视图 base基础类视图 ...

  10. test20181015 B君的第二题

    题意 分析 考场85分 用multiset暴力,由于教练的机子飞快,有写priority_queue水过了的人. #include<cstdlib> #include<cstdio& ...