AYABALA博客

Category: Javascript (page 1 of 2)

Object.defineProperty()方法详解

Object.defineProperty

顾名思义,为对象定义属性。在js中我们可以通过下面这几种方法定义属性

3种定义对象属性的方法

var someOne = {};
// (1) define someOne property name
someOne.name = 'cover';
//or use (2) 
someOne['name'] = 'cover';
// or use (3) defineProperty
Object.defineProperty(someOne, 'name', {
    value : 'cover'
})

使用Object.defineProperty定义对象属性看起来很麻烦,但是这种方式是十分强大的

我们可以通过Object.defineProperty这个方法,直接在一个对象上定义一个新的属性,或者是修改已存在的属性。最终这个方法会返回该对象。

继续阅读

【js】js设置样式优先级的问题

在用js去设置css样式的时候:在同一个代码块中,有些css样式的设置的权限要高于其他的样式

这样是先设置position再设置left和top,所以无法读取初始的left和top:

for (var i=0; i<aLi.length; i++) {
        //在用js去设置css样式的时候:在同一个代码块中,有些css样式的设置的权限要高于其他的样式
        aLi[i].style.left = aLi[i].offsetLeft + 'px';
        aLi[i].style.top = aLi[i].offsetTop + 'px';
        aLi[i].style.position = 'absolute';
}  //这样是先设置position再设置left和top,所以无法读取初始的left和top

解决方法:分成两个代码块

for (var i=0; i<aLi.length; i++) {
        aLi[i].style.left = aLi[i].offsetLeft + 'px';
        aLi[i].style.top = aLi[i].offsetTop + 'px';
}
for (var i=0; i<aLi.length; i++) {
        aLi[i].style.position = 'absolute';
}

【js】常用正则实例(数据校验)

常用正则实例(数据校验)
匹配中文:[\u4e00-\u9fa5]
行首行尾空格:^\s*|\s*$
Email:^\w+@[a-z0-9]+(\.[a-z]+){1,3}$
网址:[a-zA-z]+://[^\s]*
QQ号:[1-9][0-9]{4,9}
邮政编码:[1-9]\d{5}
身份证:[1-9]\d{14}|[1-9]\d{17}|[1-9]\d{16}x

【js】面向对象

工厂方式:构造函数
当new去调用一个函数,这个时候函数中的this就是创建出来的对象,而且函数的返回值直接就是this(隐式返回)

var a=[1,2,3];
var b=a;
b=[1,2,3,4]; //只要是赋值,必然要在内存中重新生成
//b=[1,2,3,4]; a=[1,2,3];

基本类型的比较:只要值相同就是true
引用类型的比较:必须值和引用都相同

原型:去改写对象下面公用的方法或属性,让公用的方法或属性在内存中存在一份(提高性能)

this:事件或定时器的时候特别容易出问题,尽量让面向对象中的this指向对象

继续阅读

【js】部分注意事项

1.js获取img等元素的src的时候获取的src地址是绝对路径而不是相对路径
所有的相对路径都别拿来做判断。src、herf
颜色值别拿来做判断。#fff rgb(0,0,0)
innerHTML值别拿来做判断

继续阅读

【js】for应用

1.修改样式

div.style.width
div.style.cssText
以上两种都是设置行内样式
想要清空行内样式:div.style.cssText=”;

继续阅读

【js】数据类型、类型转换

1.任何非空的东西都可以加自定义属性,包括数组
null空的对象不能添加自定义属性
var a=null;  //a的数据类型是object
var a;  //a的数据类型是undefined

继续阅读

【js】阻止默认事件和阻止事件冒泡

1.阻止默认事件

用on方法绑定和IE下attachEvent方法绑定的时候用return false取消

addEventListener方法绑定的时候用ev.preventDefault()   (W3C)取消或者是ev.returnValue=false    (IE)
2.阻止事件冒泡
ev.stopPropagation()                                (W3C)
ev.cancelBubble()                                        (IE)
ev.stopImmediatePropagation()       (W3C)        阻止当前节点的后续事件

Copyright © 2019 AYABALA博客

Theme by Anders NorenUp ↑