1、js的数据类型分为基本和引用,基本(string、undefined、null、number,boolean),引用(object-->array、function、json等)

2、基本数据类型和引用数据类型的区别:前者是简单的赋值,后者是将引用地址赋给变量

  var a=123;

  var b={

     "name"="zhang"

  }   json

  var c=["ni",23]   数组

  var d=function(){

     console.log(12)

  }   函数

3、堆内存:存放代码块的,有两种方式

(1)对象以键值对的形式存放

(2)函数以字符串的形式存放

案例:

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

4、在js中函数类型有2种

(1)普通函数

(2)类

5、对象 object:对象里的数据以键值对的形式存在

(1)单例模式

var zhang={

  "name"="zhangsan"

  "age"=23

}把变量zhang叫做命名空间

单例模式的优势:每个对象都是独立的,即便属性的名字都一样,不会互相干扰,方便现在流行的开发模式

“模块化开发”,如果需要使用里面的属性,用点运算符(.),如zhang.name或zhang[name],判断一个shuxing

是不是这个对象的用in运算符,如"name"in zhang,如果遍历这个对象,用for(attr in zhang){}

劣势:不可以批量生产,只能一个个去创建

(2)工厂模式

function A(name,age){

  var obj={

    "name"=name,

    "age"=age

  }

  return  obj;

}

var zhang=A("张三",23)

var lisi=A("李四",24)

console.log(lisi)

这种模式叫做函数封装

优势:可以批量生产,减少代码的冗余,提高代码的重复利用(高密度低耦合),没有继承和多态

(3)构造函数

要求:函数名首字母bixudaxie

     里面的属性必须加this

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

person:类    zhang:实例

万物皆对象,对象的特征有属性和方法

string的类是String

数组的对象是Array

对象的对象的Object

构造函数里的this指向实例对象,构造函数里有了实例和类的概念,并且实例和实例都是独立的个体,我们把它叫做实例识别

构造函数里的对象都是私有的,各个实例对象之间没有公共的属性,为了实例的对象拥有公共的属性,所以js使用了prototype

(原型)这个属性,他的属性值是一个对象,我们可以把这个公共的属性放在prototype上

6、原型分析  prototype

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

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

(3)每一个对象数据类型(实例、普通对象、prototype)都天生具有一个__proto__属性,它的属性值是当前

实例所属类的原型

7、原型链:duixiang.shuxing的时候,首先看这个属性是不是私有的,私有的就直接使用,如果私有的没有就用

公有的,公有的有就使用,没有就按照__proto__找他的类上有没有,直到找到基类object为止,如果object没有

就undefined,这种查找机制叫做原型链

8、作用域和堆内存的区别:作用域是执行函数的时候产生的,函数执行的时候会开辟一个新的内存空间,叫做

栈内存(环境、作用域)

而堆内存是数据类型在赋值的时候会开辟一个新的内存空间,它是存放代码块的数据库

 

11.1JS笔记的更多相关文章

  1. C++11 学习笔记 std::function和bind绑定器

    C++11 学习笔记 std::function和bind绑定器 一.std::function C++中的可调用对象虽然具有比较统一操作形式(除了类成员指针之外,都是后面加括号进行调用),但定义方法 ...

  2. C++11/14笔记

    目录 语言层面 模板表达式中的空格 nullptr和std::nullptr_t 自动推导类型----auto 一致性初始化----Uniform Initialization 初始化列表(initi ...

  3. 11/6笔记 补充(Redis持久化,RDB&&AOF)

    11/6补充笔记 修改redis-6379.conf里面的save10秒2个数据发生改变 (save 10 2) 修改一次数据不发生改变,修改2次数据才发生改变 继续修改数据,发现还是一样的规律 增删 ...

  4. iOS 阶段学习第11天笔记(OC基础知识)

    iOS学习(OC语言)知识点整理 一.OC基础知识 1)#import  用于导入头文件,预处理阶段加载引用,只加载一次. 2)OC 依赖于Foundation框架下的头文件Foundation.h, ...

  5. C++11学习笔记

    C++11 1.long long新类型 2.列表初始化 int t=0; int t={0}; int t(0); int t{0}; 注意:如果我们使用列表初始化有丢失信息的风险,则编译器报错 l ...

  6. linux0.11学习笔记(1)

    公布软件包包括内容: bootimage.Z - 具有美国键盘代码的压缩启动映像文件: rootimage.Z - 以1200kB 压缩的根文件系统映像文件: linux-0.11.tar.Z- 内核 ...

  7. lesson - 11 课程笔记

    一.sed  作用: sed 是一种流编辑器,它是文本处理中非常重要的工具, 能够完美的配合正则表达式使用.处理时,把当前处理的行存储在临时缓冲区中, 称为“模式空间(pattern space)”, ...

  8. C++11学习笔记(5) —— override and final (转)

    原文转自 http://blog.csdn.net/fire_lord/article/details/8540592 1.简介 C++为我们提供了继承和虚函数的重写特性. 在派生类中,重写虚函数不强 ...

  9. 802.11学习笔记1-WIFI参数含义

    研究下wifi参数的含义 #The word of "Default" must not be removed Default CountryRegion= CountryRegi ...

随机推荐

  1. Android 设备,如何root,执行adb shell,查看设备中的数据库信息等【转】

    原文地址: Android 设备,如何root,执行adb shell,查看设备中的数据库信息等

  2. cpu-io.sh

    CPU-IO.SH #!/bin/bash #Edit by laozuo.org cname=$(cat /proc/cpuinfo|grep name|head -1|awk '{ $1=$2=$ ...

  3. ArcGIS案例学习笔记-找出最近距离的垂线

    ArcGIS案例学习笔记-找出最近距离的垂线 联系方式:谢老师,135-4855-4328,xiexiaokui@qq.com 目的:对于任意矢量要素类,查找最近距离并做图 数据: 方法: 0. 计算 ...

  4. Nginx搭建hls流媒体服务器

    第一种方案:ffmpeg+nginx   新的ffmpeg已经支持HLS.(本人也参与了代码供献,给自己做个广告:))   点播:   生成hls分片:   ffmpeg -i <媒体文件> ...

  5. Java的学习03

    今天依然记录一下,学习情况,可以看到自己每一天都在进步. import java.text.DateFormat; import java.text.ParseException; import ja ...

  6. Spring 7种事务传播行为

    1.PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置. 2.PROPAGATION_SUPPORTS:支持当前事务,如 ...

  7. shell脚本-删除当天日期前3个月的数据表

    #!/bin/bash #author:skycheng #get current date string datestr=`date +'%Y-%m-%d'` start_time=`date +' ...

  8. javascript中所有函数的参数都是按值传递的

    [javascript中所有函数的参数都是按值传递的] 参考:http://www.jb51.net/article/89297.htm

  9. 初探Mybaties整合分页插件PageHelper(1)

    Mybaites整合分页PageHelper插件 在数据进行分页,通过sql语句,mysql分页,table_name表名,pageNum 第几页,pageSize 每页数据条数: SELECT * ...

  10. django搭建的站点,通过localhost能访问,但是通过ip不能访问

    问题:使用ip访问不了django站点,只能用127.0.0.1访问     解决方法:启动服务时ip使用0.0.0.0   使用gunicorn启动 gunicorn -w4 -b0.0.0.0:8 ...