笔记(一)——基本介绍之深拷贝与浅拷贝

1.面向对象的基本概念

1.1 是不是一个面向对象的语言

不是:与传统的面向对象的理论有矛盾。(C# ,java)

是:js 里面到处都是对象。 数组 时间 正则 ...

给出一个折中的说法

js是一个基于对象的多范式编程

多范式:是指编程风格

1.面向过程的方式编程

2.面向对象的方式编程

3.函数式编程...

** -> 函数式编程的一个特点:递归与链式**

jQuery 就是典型的链式编程风格

比如:给div标签添加样式


$('div').css('border','1px solid red');

1.2面向对象的概念

概念:要做什么就找到对应的对象,告诉他做什么,然后等待结果。
面向对象是面向过程的封装。

1.3万物皆对象

在实际开发中,对象是一个抽象的概念,可以将其简单的理解为:数据集或者功能集、

—>数据集:很多数据打包到一起。{name:'张三',age:19,gender:'男'}

假设展示10条商品数据:每个商品:名字,描述,价格,图片

—>每一条数据可以变成一个对象:{name:'',desc:'',price:0,img:''}

—> 引入数组,将数据存储到数组中。

—>功能集:

1.4 面向对象的特性

1.抽象性(抽取一些我们需要的属性和方法)

2.封装性

3.继承性

4.多态性(在js中,不需要多态性)

2.js的数据类型

2.1分类:

1.基本数据类型(值类型):number string ,boolean

2.复合数据类型(引用数据类型):时间,数组,正则

3.空类型

基本数据类型的存储模型 就是一个方格里面放一个数据

复合数据类型的存储模型 是一个单独的内存的区域,对象有什么
属性,那么内存区域中就有什么属性。变量只存储对象的'地址',所以
它不是真正存储数据的区域。

注意: 复合类型除了funcion以外,无法通过typeof 获取
到数据类型。需要通过Object.prototype.toString.apply()
获取到它是什么数据类型。

2.2值类型和引用类型的存储特征

-->值类型的数据,只需要开辟一段内存存储数据即可。

-->对象类型(引用类型), 对象才是真正的数据,需要占据单独的内存。
而变量名只是存储着对象的内存地址(引用)。

2.3值类型与引用类型的赋值与传参的特点

--> 赋值:将原变量中的数据拷贝一份,然后存储到给定变量中

值类型:拷贝的数据与原来没有关系,改变一个变量,另一个变量不会随着改变。

引用类型:由于引用类型存储的是地址,因此改变一个值,另一个值也会改变。且值与
与改变的相同。

2.4函数参数传递

函数要调用时,需要传参数。

在调用函数时,形参会先复制一份实参。

3. 深拷贝与浅拷贝

3.1什么是拷贝

就是创建一个与目标数据一模一样的数据

3.2拷贝

var p={
    name:'张三',
    age:19.
    gender:'男',
    clone:function(){
        var temp={};
        temp.name=this.name;
        temp.age=this.age;
        temp.gender=this.gender;
        temp.clone=this.clone;
        return temp
    }   
    var p2=p.clone();
}

3.2 深拷贝与浅拷贝

//浅拷贝案例
var car={name:'保时捷'};
var person={
    name:'张三',
    age:19.
    gender:'男',
    clone:function(){
        var temp={};
        temp.name=this.name;
        temp.age=this.age;
        temp.gender=this.gender;
        temp.clone=this.clone;
        return temp
    }   
    var p1=person.clone();
    var p2=person.clone();
    //p1中的car与p2中的car是同一个对象,这属于浅拷贝
    
    
    
    //深拷贝
    function deepCopy(p, c) {
    var c = c || {};
    for (var i in p) {
      if (typeof p[i] === 'object') {
        c[i] = (p[i].constructor === Array) ? [] : {};
        deepCopy(p[i], c[i]);
      } else {
         c[i] = p[i];
      }
    }
    return c;
  }
}

如果对象的属性也是引用类型,拷贝的时候不重新创建一个新的
对象来实现该属性的拷贝,那么就是浅拷贝。既是浅拷贝。

讲两个对象完全从内存中隔离开,就是深拷贝,既每一个引用
属性,以及引用属性的引用,全部拷贝出来,就是深拷贝。

4.构造函数(构造器 controctor)作用

—>4.1js中对象的动态特性

即 想要什么属性就可以提供什么属性
在js 中 对象如果没有指定的属性,只需要利用赋值就可以
给对象提供属性。

—>点语法与关联数组的语法

o.name='jim'; //点语法赋值
o['name']='tom';关联数组语法赋值

问题:
    //name是一个变量,里面存储的是字符串,也是可以的
    o[name]='jack';

4.2使用工厂方法创建函数

function createPerson( name, age, gender ) {
            var p = {};
            p.name = name;
            p.age = age;
            p.gender = gender;
            return p;
        }

        var p1 = createPerson( 'jim', 19, '男' );
        var p2 = createPerson( 'lily', 18, '女' );

        这个( 这种类型 )的函数就是用来创建对象的, 即生产对象. 常常将这类函数
        称为 '工厂函数'

4.3构造函数常见函数

function Person( name, age, gender ) {
            this.name = name;
            this.age = age;
            this.gender = gender;
        }
        // 调用构造器创建对象
    var p = new Person( '李磊', 19, '男' ); 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,718评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,683评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,207评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,755评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,862评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,050评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,136评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,882评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,330评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,651评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,789评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,477评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,135评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,864评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,099评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,598评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,697评论 2 351

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,934评论 6 13
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,602评论 18 399
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,135评论 30 470
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,513评论 1 51
  • 天空沉沉睡去的时刻 你向我讨一句晚安 我,笑了笑 偏偏不给 像是雨天收起阳台晒晾的衣服 那样收起对你的心意 并不是...
    94f45c0edad4阅读 138评论 0 1