首页 > 技术文章 > JS静态变量和静态函数

laijinquan 2019-08-20 16:55 原文

 

本文链接:https://blog.csdn.net/u012790503/article/details/46278521

function A(){this.id = "我是AA"}            //   在构造函数外定义的都是所有对象共享的
A.id = "我是A";
A.sayId = function(){alert(A.id);}
A.sayId();

如上,在构造函数外用函数名定义的属性或者方法,可以也只可以通过函数名来访问,这和C++基本一样。

输出

 

试图访问非静态变量时

function A(){this.id = "我是AA"}            //   在构造函数外定义的都是所有对象共享的
A.id = "我是A";
A.sayName = function(){alert(this.id);}
A.sayName();

 

输出

 

说明访问不了。

再看看this是什么

 

 

那么如果用prototype呢?

function A(){this.id = "我是AA"}            //   在构造函数外定义的都是所有对象共享的
A.prototype.id = "我是A";
A.prototype.sayName = function(){alert(this.id);}
a = new A();
a.sayName();

输出

 

说明:

1、输出"我是AA"是因为"我是A"是在之后赋值的,把"我是A"覆盖了。

2、prototype指向的是一个Object对象,注意它是一个对象,当使用prototype时(或者是定义函数后),会产生一个Object对象,等同于 object = new Object();

3、通过prototype添加的属性和方法不是静态的,只能通过对象来访问。

 

推荐阅读