面向对象

如下代码中, new 一个函数本质上做了什么?

function Modal(msg){
    this.msg = msg
}
var modal = new Modal()

1.执行 new Modal()
1.1创建一个空对象 {},假设名字是 tmpObj
1.2执行 Modal 函数,执行过程中对 this 操作就是对 tmpObj 进行操作
1.3 函数执行完后返回刚刚创建的 tmpObj
2.把 tmpObj 赋值给 modal (modal指向同一个对象)


画出如下代码的原型图。

function People (name){
  this.name = name;
}

People.prototype.walk = function(){
  console.log(this.name + ' is walking');  
}

var p1 = new People('饥人谷');
var p2 = new People('前端');
原型图

扩展 String 的功能增加 reverse 方法,实现字符串倒序

var str = 'hello jirengu'
var str2 = str.reverse()
console.log(str2) //  'ugnerij olleh'
var str = 'hello jirengu';

if(!String.prototype.reverse){
  String.prototype.reverse = function(){
    return Array.prototype.reverse.apply(this.split('')).join('');
  };
}

var str2 = str.reverse();

console.log(str2);

有如下代码,代码中并未添加 toString方法,这个方法是哪里来的?画出原型链图进行解释

function People(){
}
var p = new People()
p.toString()
原型图

1.当前对象为 p ,查找 toString 方法,先从 p 的属性里找,没有找到;
2.再从 p.proto 中找,没有找到;
3.再从 p.proto.proto 中找,找到后返回。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  •   面向对象(Object-Oriented,OO)的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意...
    霜天晓阅读 2,256评论 0 6
  • 博客内容:什么是面向对象为什么要面向对象面向对象编程的特性和原则理解对象属性创建对象继承 什么是面向对象 面向对象...
    _Dot912阅读 1,536评论 3 12
  • 面向对象的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。ECMAScr...
    DHFE阅读 1,088评论 0 4
  • title: js面向对象date: 2017年8月17日 18:58:05updated: 2017年8月27日...
    lu900618阅读 692评论 0 2
  • 细雨蒙蒙,礼堂三楼的晚会现场却异常火爆。灯光璀璨,演员认真,表演精彩,为我们展现出了苏农的卓尔不群。 感谢所有抽出...
    这才是仙女啊阅读 228评论 0 0

友情链接更多精彩内容