-
object.seal 对象密封,不能修改配置,只能修改值,不能添加新属性
object.isSeal
object.preventExtensions 阻止对象扩展,不能添加新属性
object.isExtensible
object.freeze 冻结对象,对象永远不可变
object.isFrozen
查看全部 -
var a=b=1;
var a = 1,b =1;
查看全部 -
严格等于会首先判断类型
NaN 不仅六亲不认,连自己也不认识
有number时,会把string转换为number
有boolean时,会把boolean先转换为number
有object时,先尝试把对象转为基本类型,能转为基本类型的即true,其他为false查看全部 -
严格等于会首先判断类型
NaN 不仅六亲不认,连自己也不认识查看全部 -
null == undefined
new Object() == new Object()[1,2] == [1,2]
查看全部 -
<script type="text/javascript">
/*
* param1 Array
* param2 Array
* return true or false
*/
function arraysSimilar(arr1, arr2) {
// 首先判断类型是否相同
if (typeof arr1 !== typeof arr2) return false
// 判断是否是数组
if (arr1 instanceof Array) {
// 是数组
// 数组长度是否相等
// 不相等
if (arr1.length !== arr2.length) return false
// 相等
// 是否是空数组
if (arr1.length === 0) return true
// 不是
const string1 = getType(arr1)
const string2 = getType(arr2)
if (string1 !== string2) return false
} else {
// 不是数组
// 判断是否是对象
if (typeof arr1 === 'object') {
// 是对象
if (arr1 === null || arr2 === null) return false
if (arr1 instanceof Date && arr2 instanceof Date) return true
} else {
// 不是对象
if (arr1 !== arr2) return false
}
}
return true
}
function getType(arr) {
const type = []
arr.forEach(item => {
if (typeof item === 'object') {
type.push(Object.prototype.toString.call(item))
} else {
type.push(typeof item)
}
});
return type.sort().toString()
}
</script>
查看全部 -
oop 面向对象
查看全部 -
对象标签、对象序列化 [未更新视频]
var
obj = {x:1, y:2};
obj.toString =
function
(){
return
this
.x +
this
.y;};
obj.valueOf =
function
(){
return
this
.x +
this
.y + 100}
"result"
+ obj;
// 这里是result103,而不是result3
JavaScript中的二元+操作符,若操作数为对象,则尝试转换为基本类型。优先级是先找valueOf,再找toString。
注意到,若valueOf/toString返回的不是基本类型,而是对象,则会被忽略。
var
obj = {x:1, y:2};
obj.toString =
function
(){
return
this
.x +
this
.y;};
obj.valueOf =
function
(){
return
{x : 1}};
// 不可用的valueOf
"result"
+ obj;
// "result3", 因为valueOf无效,使用toString作为结果返回
若valueOf/toString均不可用,则报TypeError异常。
var
obj = {x:1, y:2};
obj.toString =
function
(){
return
{};};
// 不可用的toString
obj.valueOf =
function
(){
return
{x : 1}};
// 不可用的valueOf
"result"
+ obj;
// Uncaught TypeError: Cannot convert object to primitive value
查看全部 -
属性标签对应值
查看全部 -
严格模式消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
查看全部 -
利:
with
语句可以在不造成性能损失的情況下,减少变量的长度。其造成的附加计算量很少。使用'with'可以减少不必要的指针路径解析运算。需要注意的是,很多情況下,也可以不使用with语句,而是使用一个临时变量来保存指针,来达到同样的效果。弊:
with
语句使得程序在查找变量值时,都是先在指定的对象中查找。所以那些本来不是这个对象的属性的变量,查找起来将会很慢。如果是在对性能要求较高的场合,'with'下面的statement语句中的变量,只应该包含这个指定对象的属性。查看全部 -
enumerable(可枚举性),如果一个属性的enumerable为false,下面三个操作不会取到该属性值。
* for..in循环
* Object.keys方法
* JSON.stringify方法查看全部 -
注意,obj.hasOwnproperty().属性
查看全部 -
修改构造器原型的对象student,是会影响已经实例化的对象bosn;直接给student的原型赋值则不会影响,只会影响之后实例化的对象nunnly
查看全部 -
通过object.creat(), bind(),创建的对象是一个空对象,没有原型的
查看全部
举报