2023-08-16 15:25:16 +08:00

96 lines
2.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

catvm.memory.Plugin = {}
const Plugin = function Plugin() {
throw new TypeError('Illegal constructor')
}
catvm.safefunction(Plugin);
//
catvm.memory.Plugin.iterator = function values() {
debugger;
return {
next: function () {
if (this.index_ == undefined) {
this.index_ = 0
}
let temp = this.self_[this.index_]
this.index_++
if (temp != undefined) {
return {done: false, value: temp}
} else {
return {done: true, value: undefined}
}
},
self_: this,
}
}
catvm.safefunction(catvm.memory.Plugin.iterator);
Object.defineProperties(Plugin.prototype, {
[Symbol.toStringTag]: {
value: 'Plugin',
configurable: true,
},
[Symbol.iterator]: {
value: catvm.memory.Plugin.iterator,
configurable: true,
}
})
////////////////原型-补环境-start////////////////
// 如果实例上的属性和原型上的属性名相同,值按照实例上的属性值
Plugin.prototype.description = ''
Plugin.prototype.filename = ''
Plugin.prototype.name = ''
Plugin.prototype.length = 0
Plugin.prototype.item = function item(index) {
debugger;
return this[index]
}
catvm.safefunction(Plugin.prototype.item);
Plugin.prototype.namedItem = function namedItem(key) {
debugger;
return this[key]
}
catvm.safefunction(Plugin.prototype.namedItem);
for (let pr in Plugin.prototype) {
if (typeof (Plugin.prototype[pr]) != 'function') {
Plugin.prototype.__defineGetter__(pr, function () {
throw new TypeError('Illegal constructor')
}
)
}
}
////////////////原型-补环境-end//////////////////
// 保存到内存 因为navigator.plugins存在多个后期添加直接new一个就可以了
// {description:'Portable Document Format',filename:'internal-pdf-viewer',name:'PDF Viewer',MimeType:[]}
catvm.memory.Plugin.new = function(data){
let plugin = {}
if(data != undefined){
plugin.description = data.description
plugin.filename = data.filename
plugin.name = data.name
if(data.MimeTypes != undefined){
for (let mtindex = 0; mtindex < data.MimeTypes.length; mtindex++) {
var mimeTypedata = data.MimeTypes[mtindex];
var mimeType = catvm.memory.MimeType.new(mimeTypedata,plugin)
plugin[mtindex] = mimeType
// plugin[mimeType.type] = mimeType
Object.defineProperty(plugin,mimeType.type,{
value:mimeType,
configurable: true
});
}}
plugin.length = data.MimeTypes.length
}
plugin.__proto__ = Plugin.prototype
return plugin
}