Javascript笔记(Day02)

1、日常开发中,一般使用构造函数与原型结合的方式,构造函数用于定义实例属性,原型对象用于定义方法和要共享的属性。这样每个实例都会拥有一份实例的副本并且又有共享的内容,极大节省了内存。

function Sll(name, age, bf){
    this,name = name;
    this.age = age;
    this.bf = ['cty'];
}
Sll.prototype = {
    constructor: Sll,
    sayName(){
        console.log('我家傻萝莉是智障障...');
    }
}
const sll = new Sll('yjm', 21);
const zzz = new Sll('loly', 22);
sll.bf.push('大叔');
console.log(sll.bf,zzz.bf); //[ 'cty', '大叔' ] [ 'cty' ]

2、寄生构造函数方式,类似于工厂模式,创建一个表面上像是构造函数的函数,但仅仅用来封装创建对象,并返回新创建的对象。(注意,不能用instanceof来确定对象类型)

function Sll(name, age){
    const o = new Object();
    o.name = name;
    o.age = age;
    return o;
}
const yjm = new Sll('mdzz', 21);
console.log(yjm.name);//mdzz

例子: 假设我们需要创建一个具有额外方法的数组,因为不能在Array构造函数上修改。

function ExtraArray(){
    const arr = new Array();
    arr.push.apply(arr, arguments);
    arr.extraFunction(){
        return this.join('+');
    }
    return arr;
}
const arrayTest = new ExtraArray('sll', 'is', 'zzz');
console.log(arrayTest.extraFunction());//sll+is+zzz

3、原型链(继承),这个东西直接上代码吧

function Father(){
    
}
Father.prototype.getFather = function(name){
    console.log(name);
}
function Child(){

}
Child.prototype = new Father();
Child.prototype.getChild = function(child){
    console.log(child);
}
const child1 = new Child();
child1.getChild('yjm');//yjm
child1.getFather('cty');//cty
function GrandChild(){

}
GrandChild.prototype = new Child();
GrandChild.prototype.getGrandChild = function(grandChild){
    console.log(grandChild);
}
const grandChild1 = new GrandChild();
grandChild1.getFather('ctyzz');//ctyzz
grandChild1.getChild('yjmzz');//yjmzz
grandChild1.getGrandChild('mdzz');/mdzz
console.log(grandChild1 instanceof Father, grandChild1 instanceof Child, grandChild1 instanceof GrandChild);//true true true

GrandChild继承Child,Child继承Father,所以GrandChild的实例grandChild1也是Child、Father的实例,所以代码中三个instanceof结果都是true。
(注意,不能用对象字面量的形式创建原型方法,不然会重写原型链。)

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

推荐阅读更多精彩内容

  • 原型链是一种机制,指的是 JavaScript 每个对象都有一个内置的 __proto__ 属性指向创建它的构造函...
    劼哥stone阅读 4,408评论 15 80
  • 第5章 引用类型 引用类型的值(对象)是引用类型的一个示例。在ECMAScript 中,引用类型是一种数据结构,用...
    力气强阅读 714评论 0 0
  • 夜里十一点,立早还在忙着赶路。 白灯笼摇曳着微弱的烛光,立早一个人在赶路。 立早必须要在今天结束前见到她,因为凌晨...
    丶丨冲浪里阅读 217评论 0 0
  • 阳光轻抚着发梢 风吹来 带着温热的甜美, 多好 在这样的日子里 有我们的身影 follow your heart.
    薄雾迷殇阅读 217评论 0 0
  • 对照美洲13月亮历,红月年是2014年7月26日-2015年7月24日,而今天是红月年的最后一天。 按照月亮厉,我...
    三饭姨阅读 628评论 0 1