mirror of
https://github.com/luzhisheng/js_reverse.git
synced 2025-04-19 07:44:45 +08:00
96 lines
2.7 KiB
JavaScript
96 lines
2.7 KiB
JavaScript
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
|
||
} |