JS基础学习日志之原型链、原型中的toString()、垃圾回收机制

目标:2019年结束前可以自己上手写出一个完整项目.
计划:目前先学完《尚硅谷JavaScript》140P,抽空多看HTML&CSS,之后再计划别的.
习惯:每天至少可以学1P(根据大计划).

2019-11-10

《尚硅谷JavaScript》学习笔记
P67(原型对象-原型链)、P68( toString() )、P68(垃圾回收 GC)

一、原型链
1、原型对象prototype也是一个对象,它也包含着原型prototype(proto)。
2、当使用一个对象的属性和方法时;
-会先在对象自身中寻找,如果对象自身中有,则直接使用;
-没有则在原型对象中寻找,如果原型对象中有,则直接使用;
-如果原型中没有,则在原型的原型对象中寻找,直到找到Object的原型中;
-当Object对象的原型中没有第二层原型对象,如果在Object对象的原型中也没有找到该属性、方法时,则返回undefined。
3、检查属性
-使用对象的【hasOwnProperty()】方法来检查对象本身中是否含有某个属性,有返回true,没有则false。
-使用【in】去检查对象中是否含有某个属性时,对象中没有原型对象中有,也会返回true。

function MyClass(){
};
var mc = new MyClass();
console.log(mc.name);
// 因mc实例中没有name属性,所以返回为undefined
MyClass.prototype.name=("777777");
mc.age = 123;
console.log(mc.name);
// 返回为777777,prototype为原型对象,原型对象为一个类的公共区域,由该类创建的实例中都可以访问prototype。
console.log("name" in mc);
// 返回true,使用【in】去检查对象中是否含有某个属性时,对象中没有原型对象中有,也会返回true。
console.log(mc.hasOwnProperty("name"));
//返回false,使用对象的【hasOwnProperty()】方法来检查对象本身中是否含有某个属性。
console.log(mc.hasOwnProperty("age"));
//返回为true。
console.log(mc.hasOwnProperty("hasOwnProperty"));
//返回为false,mc中无该方法,没有主动添加但可以使用的属性、方法为原型对象中的属性、方法。
console.log(mc.proto.hasOwnProperty("hasOwnProperty"));
//返回为false,mc.proto中也无该方法。
console.log(mc.proto.proto.hasOwnProperty("hasOwnProperty"));
//返回为true,原型链一般为两层,还找不到会一直找到Object的原型中。
console.log(mc.proto.proto.proto);
//返回为null,Object对象的原型中没有原型,所以为null。

二、toString()
1、当使用直接在页面中打印一个对象时(console.log()),实际上是输出该对象的toSting()方法的返回值,如果想要自定义输出的返回值:

-可为该对象创建一个toSting()方法,(方法:对象的属性为一个函数)
per.toString() = function (){
"在这里自定义想要输出的返回值。";
};
输出时,先在当前对象中寻找toString方法,如有,则直接输出。
如果想自定义该对象的输出为对象的详细信息,可:
per.toString = function(){
return "Person[name="+this.name+",age="+this.age+",gender="+this.gender+"]";
}
*拼串注意使用【+】;
*属性的值不能写死,写成变量。
但是,直接在该对象中添加具有局限性,只有该对象可以使用。

-在大类的原型对象prototype中添加一个toString()方法:
Person.prototype.toString = function(){
return "Person[name="+this.name+",age="+this.age+",gender="+this.gender+"]";
};
console.log(per.toString());
所有Person类中的实例都可使用。

三、垃圾回收(Garbage Collection)
-当一个对象没有变量及属性对它进行引用时,则无法无操作该对象,这样的对象就属于程序中的垃圾,当这种对象过多时,会占用程序中大量的内存空间,导致程序变慢。
-程序运行过程中,会累计垃圾,当垃圾过多时,会影响到程序的运行速度。
-JS拥有自动的垃圾回收机制,会自动将这些垃圾对象从内存中销毁,开发人员不需要也不能进行垃圾回收操作。
-可将不再使用的对象设置为null来使浏览器区分,obj = null 则意味着这个对象可以销毁。

——————————————2019-11-10 22:50—————————————

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

推荐阅读更多精彩内容