html - #小白的困惑#JavaScript如何封装重定义了prototype的原型?
本文介绍了html - #小白的困惑#JavaScript如何封装重定义了prototype的原型?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
在我的认知里修改一个原型的prototype是写成这样的
function creatA(){
this.A = function(){};
/*
this.B = ...
this.C = ...
blablabla
*/
}
creatA.prototype = {
test1 : "test1",
test2 : function(){}
};
但是如果这样封装的话,在html里面也能访问或者修改prototype里的值的样子。
请问怎么能够让外部不能访问呢?再封装一层吗?如果是这样那在html里初始化的时候改如何初始化呢?(想了很久搞得心情有点毛躁...翻书居然都翻不到了!)求各路大神来拯救一下我这个小白。
如果可以的话请带具体的例子!谢谢了!
解决方案
题主的原意是不是想要让prototype在内部是可访问的,外部是只读的呢?如果是的话这样的可以考虑使用ES5中提供的静态对象的概念。
上手写个例子吧
`var container = (function () {
function ClassA() {
this.attr1 = 'attr1';
}
var classAPrototype = {
get: {
value: function () {
console.log('class get');
},
writable: false, // 只读
enumerable: false,//不是枚举
configurable: false // 不可配置
}
}
return {
newA: function () {
var a = new ClassA();
Object.defineProperties(a, classAPrototype);
return a;
}
}
})();
var a=container.newA()
a.get();//输出:class get
a.get=function () {
console.log('new get');
}
a.get();//输出:class get 说明属性未被修改`
这篇关于html - #小白的困惑#JavaScript如何封装重定义了prototype的原型?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文