如何获得Javascript类字段和函数
How to get Javascript class fields and functions
有没有办法从JavaScript类中获得函数和字段,而不初始化该类的对象?
var SimpleClass = function() {
this.type = 'singleClassType';
this.getType = function() {
var self = this;
return self.type;
}
}
我想获得类型字段(类似于静态)。
我可以这样做,但是我真的不想使用prototype of class:
SimpleClass.prototype.type = 'customName'
下面是我使用的代码:
var Class1 = function(id) {
this.id = id;
}
Class1.prototype.type = 'class1';
var Class2 = function(id) {
this.id = id;
}
Class2.prototype.type = 'class2';
var Class3 = function(id) {
this.id = id;
}
Class3.prototype.type = 'class3';
var Class4 = function(id) {
this.id = id;
}
Class4.prototype.type = 'class4';
var xml = {},
xmlText = '';
$(document).ready(function(){
generateObjects();
});
function generateObjects() {
for(var i=1;i<5;i++){
if(typeof eval('Class'+i).prototype.getHtml === 'undefined'){
$.ajax({
dataType: 'xml',
url: 'file.xml',
async: false,
success: function(data){
xmlText = data;
addClassData();
}
});
function addClassData(){
xml['"'+eval('Class'+i).prototype.type+'"'] = xmlText;
}
eval('Class'+i).prototype.getHtml = function(){
var self = this;
return xml['"'+self.type+'"'];
}
}
var kl = eval('Class'+i),
obj = new kl(i);
console.log(obj.getHtml());
}
}
有没有办法从JavaScript类中获得函数和字段,而不初始化该类的对象?
。除非你反编译函数,否则解析JS代码并查找属性赋值。
我可以这样做,但是我真的不想使用prototype of class:
如果这个字段应该在类的所有实例中共享,那么使用原型并没有什么问题。
如果你说的"静态"是指它是类成员而不是实例成员,那么你也可以直接在构造函数中添加属性:
var SimpleClass = function() {
this.getType = function() {
return SimpleClass.type;
// alternatively, something like `this.constructor.type`
// but only if you understand when this works and when not
}
}
SimpleClass.type = 'singleClassType';
像这样访问属性/字段:
var SimpleClass = function(){
this.type = 'singleClassType';
this.getType = function(){
var self = this;
return self.type;
}
}
SimpleClass["type"] = 'customName';
alert(SimpleClass["type"]);
也可以。看看这篇MDN文章-属性访问器。
请阅读这篇MDN文章-使用对象以获得关于使用JavaScript的OOP概念的更全面的信息,以避免@PaulS在他的评论中指出的问题。
相关文章:
- 在输入字段上有两个函数调用,一个在Blur上,一个不在Angular中
- ASP.net Javascript函数中的隐藏字段为null
- Don'如果字段为空,则不运行函数
- 调用JavaScript函数后,文件上载字段重置
- 在使用 findAndModify 时$set运算符中将函数参数作为字段名称传递
- 使用Jquery Keyup函数将变量从一个输入字段传递到另一个
- 输入字段验证的键代码函数在chrome中没有按预期工作
- 无法访问字段'通过aspx页面上的javascript函数传递来自代码隐藏中函数调用的客户端id的s值(页面加载
- 将值从函数传递到输入字段
- "未捕获的类型错误:未定义的不是函数“;当向输入字段添加值时
- 从Kendo中的columns.filterable.cell.template函数访问列字段名
- 隐藏字段并将其从检查函数中删除
- 点击输入字段触发jQuery函数
- 动态添加输入字段,但字段是由外部PHP函数生成的
- 访问Object字段的JavaScript函数
- 在输入字段上使用它-can'我不能从函数中取出变量,这样我就可以使用它了
- 所需字段的验证函数更短
- 使用object.freeze()扩展函数对象-can't添加字段
- 仅在focusout字段之后调用$scope.watch函数
- 为动态创建的字段jQuery创建一个函数或事件