比如说,我创建一个类:
function Person(){
this.name="Bill"
this.age="50"
this.talk=function(){
alert("Hello.")
}
}
那么我不想new一个Person的实例,怎样直接访问Person这个类的属性或者方法?
或者说有时候我创建了一个实例,修改了age=18,但是我又想知道age的默认值,这时候就需要访问Person的age。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
@开源无憾 的答案是可行的,不过有点复杂,给你来个简单点的
其中
var ClassName = (function() {...})();是我定义类的习惯写法,你可以不管,只要里面的内容也是一样的。一个比较笨的方法是构造函数改成这种形式:
默认值直接访问options对象
...
你写一个常量用来存储啊。。。
好多答案中要修改Person本身,不管是放到prototype里还是怎么样,那不是修改了题主的意思了么?
给一个不需要修改Person本身,而且也没有“new一个Person的实例”:
首先js没有类的概念,他不像java。然后如果你要给Person这个构造函数赋初始值,直接可以用Person.age在外层赋值,因为函数在js中追本溯源还是Object.
可以这样写:
调用例子:
注意:person里面用的是逗号(,),最后一个元素不用逗号。
看实际应用场景,遇到你这个问题我首先会想到两个设计模式:单例模式和安全模式。
单例模式不做赘述,只需要new一次就够了!
说一下安全模式:
安全模式个人理解,是避免在使用的时候据略new关键字,直接执行类导致报错。
这种问题一般新手容易出现,为了安全才这么做的。