专栏首页前端导学几行代码立即理解js的对象,类,原型等概念

几行代码立即理解js的对象,类,原型等概念

很多人觉得js的类和对象及原型这个概念特别难理解,特别是习惯java,php,C#等高级语言编程的同学们。

无意中找到了下面一组代码,貌似一下子理解了js中的原型,类,对象等概念。

function People(name)
{
this.name=name;
//对象方法
this.Introduce=function(){
alert("My name is "+this.name);
}
}
//类方法
People.Run=function(){
alert("I can run");
}
//原型方法
People.prototype.IntroduceChinese=function(){
alert("我的名字是"+this.name);
}

 

//测试

var p1=new People("Windking");

p1.Introduce();

People.Run();

p1.IntroduceChinese();

1、对象方法理解就很简单了,主要是如果类生成一个实例,那么该实例就能使用该方法 2、类方法,不需要通过生成实例就可以使用的方法 3、原型方法主要是用来对JS已有的系统对象进行扩展而生的,例如Array数组没有什么方法,你可以为其增加原型方法,那么创建的数组就拥有了该方法。

1、对象方法包括构造函数中的方法以及构造函数原型上面的方法; 2、类方法,其实这里的类就是一个函数,在js中由于函数也是一个对象,所以可以为函数添加属性以及方法,这种方法在node中用的比较多; 3、原型方法一般用于对象实例共享,比如Person.prototype.sayName=function(){console.log(this.name);};在原型上面添加该方法,就能实现共享。这样就不用每一次初始化一个实例的时候,为其分配相应的内存了。

原来原型方法就是事后定义类,所有类的实例都可以调用原型方法

而定类方法 ,就好比定义静态类的静态方法 ,只能用静态类的方式调用。

function People(){
  this.say=function(){
    console.log('Class');
  }
}
People.prototype.sayHi=function(){
   //为People添加一个原型方法,所有People的实例都可以访问
   console.log('Hi!');
}

People.say=function(){
  //为People添加一个类方法,仅以People为对象时可以访问
  console.log('Object');
}

var p=new People();
p.say(); //Class
People.say(); //Object
p.sayHi(); //Hi
People.sayHi(); //error

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 分布式系统关注点(19)——深入浅出「异步」

    Z哥在前面的三篇文章里和你一起聊了「高性能」主题下与「缓存」相关的内容。这次和你来聊聊提高性能的另一个大招——「异步」。

    Zachary_ZF
  • 共轭梯度法解线性方程组

    共轭梯度法是方程组求解的一种迭代方法。这种方法特别适合有限元求解,因为该方法要求系数矩阵为对称正定矩阵,而有限元平衡方程的系数矩阵正好是对称正定矩阵(考虑边界条...

    fem178
  • 有的人能轻松学会Python编程,不是基础好,而是有了这些刷题网站

    作为编程语言中最为通俗易懂的Python,学好它不仅需要正确的方法,更需要不断的算法训练。

    Python编程大咖
  • Leetcode 696. 计数二进制子串

    给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的。

    zhipingChen
  • Python面试快问快答,理论要的就是速度与精准,Python面试题No2

    for i in range(1,10)在python2和python3中都可以使用,但是要生成1-10的列表,就需要用list(range(1,10))

    梦想橡皮擦
  • 提示Android屏幕适配方案分析

    Android开发过程中我们常用的尺寸单位有px、dp,还有一种sp一般是用于字体的大小。但是由于px是像素单位,比如我们通常说的手机分辨例如1920*1080...

    用户2356368
  • 100+AI 算法面经合集(谷歌/微软/BAT/头条/京东/商汤/旷视/网易/美团/大疆等公司)

    CVer 之前推送了很多渣硕(巨佬)和菜鸡(大佬)的算法面经(实习和校招),他们面试过的公司不乏谷歌、微软亚洲研究院、BAT、京东、字节跳动、商汤、旷视和大疆等...

    Amusi
  • 大规模异步新闻爬虫【6】:用asyncio实现异步爬虫

    关于异步IO这个概念,可能有些小猿们不是非常明白,那就先来看看异步IO是怎么回事儿。 为了大家能够更形象得理解这个概念,我们拿放羊来打个比方:

    一墨编程学习
  • Leetcode 686. 重复叠加字符串匹配

    给定两个字符串 A 和 B, 寻找重复叠加字符串A的最小次数,使得字符串B成为叠加后的字符串A的子串,如果不存在则返回 -1。

    zhipingChen
  • 实用篇-无处不在的Location

    location配置是nginx模块化配置中最出色的一个设计,几乎所有nginx的业务场景都要通过书写多个location配置来顺应业务需要。语法配置和执行规则...

    后端技术探索

扫码关注云+社区

领取腾讯云代金券