太阳集团游戏官方网站 5

面试题总结三,原生对象及扩展

JavaScript 原生对象及扩充

2016/09/26 · JavaScript
· 对象

原稿出处: trigkit4   

这段时间在JavaSript实行Array操作的时候发掘并未有删除节点的措施,而本身要促成的成效须要不停调用删除节点的措施,查找了连带资料发掘能够采取prototype属性给Array扩张删除节点的方法,何况该措施同Array本身具有的push()、pop()、reverse()、slice()、sort()、join()等方法相通使用。

1、 javascript的typeof再次来到哪些数据类型

alert(typeof [1, 2]);    //object 

alert(typeof ‘leipeng’);    //string   

var i = true;    alert(typeof i);  //boolean   

alert(typeof 1);    //number   

var a;    alert(typeof a);  //undefined 

function a(){;};    alert(typeof a)  //function

var a = null;alert(typeof a); //object
解释:null是三个独有多个值的数据类型,那几个值就是null。表示一个空指针对象,所以用typeof检查测试会回到
”object ”

停放对象与原生对象

内置(Build-in卡塔尔对象与原生(Naitve卡塔 尔(阿拉伯语:قطر‎对象的分别在于:前面四个总是在内燃机开端化阶段就被创建好的靶子,是继承者的一个子集;而后人包罗了风度翩翩部分在运作进程中动态成立的对象。

太阳集团游戏官方网站 1

 

原生对象(New后的对象卡塔尔

ECMA-262 把原生对象(native object卡塔 尔(英语:State of Qatar)定义为“独立于宿主情状的
ECMAScript 落成提供的对象”。包含如下:

Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、伊娃lError、RangeError、ReferenceError、SyntaxError、TypeError、U讴歌RDXIError、ActiveXObject(服务器方面)、Enumerator(集合遍历类)、RegExp(正则表明式卡塔尔

1
Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError、ActiveXObject(服务器方面)、Enumerator(集合遍历类)、RegExp(正则表达式)

由此能够看来,不问可以知道,原生对象正是 ECMA-262 定义的类(援用类型卡塔尔。

来源:

代码1

2、例举3种强制类型调换和2种隐式类型转换?

强制(parseInt() , parseFloat() , Number() )

隐式(== ,!!)

放到对象(没有必要New卡塔 尔(英语:State of Qatar)

概念:由ECMAScript完成提供的指标,独立于宿主境遇,在八个本子程序实践的启幕处。

:每种内置对象(built-in object)都以原生对象(Native Object卡塔尔,贰个放松权利的构造函数是二个平放的靶子,也是一个构造函数。

来源:

举个栗子:

Native objects: Object (constructor), Date, Math, parseInt, eval。
string 方法例如 indexOf 和 replace, array 方法, … Host objects
(假定是浏览器蒙受): window, document, location, history, XMLHttpRequest,
setTimeout, getElementsByTagName, querySelectorAll, …

1
2
3
Native objects: Object (constructor), Date, Math, parseInt, eval。 string 方法比如 indexOf 和 replace, array 方法, …
 
Host objects (假定是浏览器环境): window, document, location, history, XMLHttpRequest, setTimeout, getElementsByTagName, querySelectorAll, …

ECMA-262][2 只定义了八个新的嵌入对象,即 GlobalMath
(它们也是原生对象,根据定义,各个内置对象都以原生对象卡塔尔。

以下是ECMA-262概念的内置对象(built-in卡塔 尔(阿拉伯语:قطر‎:

global、Object、Function、Array、String、Boolean、Number、Math、Date、RegExp、JSON、Error对象(Error,
EvalError, RangeError, ReferenceError, SyntaxError, TypeError
和URIError)

1
global、Object、Function、Array、String、Boolean、Number、Math、Date、RegExp、JSON、Error对象(Error,   EvalError, RangeError, ReferenceError,   SyntaxError, TypeError 和URIError)

太阳集团游戏官方网站 2

大家也得以改良内置对象的原型

JavaScript

if (!Array.prototype.forEach) { Array.prototype.forEach = function(fn){
for ( var i = 0; i < this.length; i++ ) { fn( this[i], i, this ); }
}; } [“a”, “b”, “c”].forEach(function(value, index, array){ assert(
value, “Is in position ” + index + ” out of ” + (array.length – 1) );
});

1
2
3
4
5
6
7
8
9
10
11
if (!Array.prototype.forEach) {
  Array.prototype.forEach = function(fn){
    for ( var i = 0; i < this.length; i++ ) {
      fn( this[i], i, this );
    }
  };
}
["a", "b", "c"].forEach(function(value, index, array){
  assert( value, "Is in position " + index + " out of " + (array.length – 1) );
});

如上代码将出口:

PASS Is in position 0 out of 2 PASS Is in position 1 out of 2 PASS Is in
position 2 out of 2

1
2
3
PASS Is in position 0 out of 2
PASS Is in position 1 out of 2
PASS Is in position 2 out of 2

潜心:增添原型是很危殆的:

JavaScript

Object.prototype.keys = function(){ var keys = []; for ( var i in this
) keys.push( i ); return keys; }; var obj = { a: 1, b: 2, c: 3 };
assert( obj.keys().length == 3, “We should only have 3 properties.” );
delete Object.prototype.keys;

1
2
3
4
5
6
7
8
9
10
11
12
Object.prototype.keys = function(){
  var keys = [];
  for ( var i in this )
    keys.push( i );
  return keys;
};
var obj = { a: 1, b: 2, c: 3 };
assert( obj.keys().length == 3, "We should only have 3 properties." );
delete Object.prototype.keys;

输出: FAIL We should only have 3 properties.

即使不是有特异需求而去扩张原生对象和原型(prototype卡塔 尔(英语:State of Qatar)的做法是倒霉的

JavaScript

//不要那样做 Array.prototype.map = function() { // code };

1
2
3
4
//不要这样做
Array.prototype.map = function() {
    // code
};

唯有那样做是值得的,比方,向部分旧的浏览器中加多一些ECMAScript5中的方法。
在这里种意况下,大家日常那样做:

XHTML

<script type=”text/javascript”> if (!Array.prototype.map) {
Array.prototype.map = function() { //code }; } </script>

1
2
3
4
5
6
7
<script type="text/javascript">
    if (!Array.prototype.map) {
        Array.prototype.map = function() {
            //code
        };
    }
</script>

[javascript]  

3、split()、join() 的区别

前端是切割成数组的情势,前面一个是将数组转变到字符串

用原型扩充对象

对js原生对象的扩张无非便是往prototype里登记,比如,大家能够后String对象里扩大ltrim,rtrim等办法。js每一种对象都持续自Object,并且,对象和其余属性都经过prototype目的来继续。通过prototype对象,我们能够扩张任何对象,满含内建的靶子,如StringDate

Array.prototype.remove = function (dx) {  

4、数组方法 pop()  push()  unshift()  shift()

push() 尾巴部分增加      pop() 尾巴部分除去

unshift() 底部增加  shift() 头部删除

map() : 遍历数组中的元素, 再次来到壹个新数组(富含回调函数重返的数量)

filter():遍历数组中的成分, 重临三个新数组(富含回调函数再次来到true的因素)

String对象的恢弘

JavaScript

<script type=”text/javascript”> if(typeof
String.prototype.ltrim==’undefined’){ String.prototype.ltrim =
function(){ var s = this; s = s.replace(/^s*/g, ”); return s; } }
if(typeof String.prototype.rtrim==’undefined’){ String.prototype.rtrim =
function(){ var s = this; s = s.replace(/s*$/g, ”); return s; } }
if(typeof String.prototype.trim==’undefined’){ String.prototype.trim =
function(){ return this.ltrim().rtrim(); } } if(typeof
String.prototype.htmlEncode==’undefined’){ String.prototype.htmlEncode =
function(encodeNewLine){//encodeNewLine:是否encode换行符 var s = this; s
= s.replace(/&/g, ‘&’); s = s.replace(/</g, ‘<‘); s =
s.replace(/>/g, ‘>’); s = s.replace(/’/g, ‘"’);
if(encodeNewLine){ s = s.replace(/rn/g, ‘<br />’); s =
s.replace(/r/g, ‘<br />’); s = s.replace(/n/g, ‘<br
/>’); } return s; } } </script>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<script type="text/javascript">
    if(typeof String.prototype.ltrim==’undefined’){
        String.prototype.ltrim = function(){
            var s = this;
            s = s.replace(/^s*/g, ”);
            return s;
        }
    }
 
    if(typeof String.prototype.rtrim==’undefined’){
        String.prototype.rtrim = function(){
            var s = this;
            s = s.replace(/s*$/g, ”);
            return s;
        }
    }
 
    if(typeof String.prototype.trim==’undefined’){
        String.prototype.trim = function(){
            return this.ltrim().rtrim();
        }
    }
 
    if(typeof String.prototype.htmlEncode==’undefined’){
        String.prototype.htmlEncode = function(encodeNewLine){//encodeNewLine:是否encode换行符
            var s = this;
            s = s.replace(/&/g, ‘&amp;’);
            s = s.replace(/</g, ‘&lt;’);
            s = s.replace(/>/g, ‘&gt;’);
            s = s.replace(/’/g, ‘&quot;’);
            if(encodeNewLine){
                s = s.replace(/rn/g, ‘<br />’);
                s = s.replace(/r/g, ‘<br />’);
                s = s.replace(/n/g, ‘<br />’);
            }
            return s;
        }
    }
</script>

        if (isNaN(dx) || dx > this.length) { return false; }  

5、IE和DOM事件流的分歧

1.实施种种不平等、

2.参数区别等

3.事件加不加on

4.this指向难点

Date对象的恢宏

getDaysInMonth:获取某月有多少天

JavaScript

Date.getDaysInMonth = function (year, month) { var days = 0; switch
(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: days
= 31 break; case 4: case 6: case 9: case 11: days = 30; break; case 2:
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) days = 29;
else days = 28; break; } return days; } if (typeof Date.prototype.format
== ‘undefined’) { Date.prototype.format = function (mask) { var d =
this; var zeroize = function (value, length) { if (!length) length = 2;
value = String(value); for (var i = 0, zeros = ”; i < (length –
value.length); i++) { zeros += ‘0’; } return zeros + value; }; return
mask.replace(/”[^”]*”|'[^’]*’|b(?:d{1,4}|m{1,4}|yy(?:yy)?|([hHMstT])1?|[lLZ])b/g,
function ($0) { switch ($0) { case ‘d’: return d.getDate(); case ‘dd’:
return zeroize(d.getDate()); case ‘ddd’: return [太阳集团游戏官方网站,’Sun’, ‘Mon’, ‘Tue’,
‘Wed’, ‘Thr’, ‘Fri’, ‘Sat’][d.getDay()]; case ‘dddd’: return
[‘Sunday’, ‘Monday’, ‘Tuesday’, ‘Wednesday’, ‘Thursday’, ‘Friday’,
‘Saturday’][d.getDay()]; case ‘M’: return d.getMonth() + 1; case
‘MM’: return zeroize(d.getMonth() + 1); case ‘MMM’: return [‘Jan’,
‘Feb’, ‘Mar’, ‘Apr’, ‘May’, ‘Jun’, ‘Jul’, ‘Aug’, ‘Sep’, ‘Oct’, ‘Nov’,
‘Dec’][d.getMonth()]; case ‘MMMM’: return [‘January’, ‘February’,
‘March’, ‘April’, ‘May’, ‘June’, ‘July’, ‘August’, ‘September’,
‘October’, ‘November’, ‘December’][d.getMonth()]; case ‘yy’: return
String(d.getFullYear()).substr(2); case ‘yyyy’: return d.getFullYear();
case ‘h’: return d.getHours() % 12 || 12; case ‘hh’: return
zeroize(d.getHours() % 12 || 12); case ‘H’: return d.getHours(); case
‘HH’: return zeroize(d.getHours()); case ‘m’: return d.getMinutes();
case ‘mm’: return zeroize(d.getMinutes()); case ‘s’: return
d.getSeconds(); case ‘ss’: return zeroize(d.getSeconds()); case ‘l’:
return zeroize(d.getMilliseconds(), 3); case ‘L’: var m =
d.getMilliseconds(); if (m > 99) m = Math.round(m / 10); return
zeroize(m); case ‘tt’: return d.getHours() < 12 ? ‘am’ : ‘pm’; case
‘TT’: return d.getHours() < 12 ? ‘AM’ : ‘PM’; case ‘Z’: return
d.toUTCString().match(/[A-Z]+$/); // Return quoted strings with the
surrounding quotes removed default: return $0.substr(1, $0.length – 2);
} }); }; }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
Date.getDaysInMonth = function (year, month) {
            var days = 0;
            switch (month) {
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                    days = 31
                    break;
                case 4:
                case 6:
                case 9:
                case 11:
                    days = 30;
                    break;
                case 2:
                    if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
                        days = 29;
                    else
                        days = 28;
                    break;
            }
            return days;
        }
 
        if (typeof Date.prototype.format == ‘undefined’) {
            Date.prototype.format = function (mask) {
 
                var d = this;
 
                var zeroize = function (value, length) {
 
                    if (!length) length = 2;
 
                    value = String(value);
 
                    for (var i = 0, zeros = ”; i < (length – value.length); i++) {
 
                        zeros += ‘0’;
 
                    }
 
                    return zeros + value;
 
                };
 
                return mask.replace(/"[^"]*"|'[^’]*’|b(?:d{1,4}|m{1,4}|yy(?:yy)?|([hHMstT])1?|[lLZ])b/g, function ($0) {
 
                    switch ($0) {
 
                        case ‘d’: return d.getDate();
 
                        case ‘dd’: return zeroize(d.getDate());
 
                        case ‘ddd’: return [‘Sun’, ‘Mon’, ‘Tue’, ‘Wed’, ‘Thr’, ‘Fri’, ‘Sat’][d.getDay()];
 
                        case ‘dddd’: return [‘Sunday’, ‘Monday’, ‘Tuesday’, ‘Wednesday’, ‘Thursday’, ‘Friday’, ‘Saturday’][d.getDay()];
 
                        case ‘M’: return d.getMonth() + 1;
 
                        case ‘MM’: return zeroize(d.getMonth() + 1);
 
                        case ‘MMM’: return [‘Jan’, ‘Feb’, ‘Mar’, ‘Apr’, ‘May’, ‘Jun’, ‘Jul’, ‘Aug’, ‘Sep’, ‘Oct’, ‘Nov’, ‘Dec’][d.getMonth()];
 
                        case ‘MMMM’: return [‘January’, ‘February’, ‘March’, ‘April’, ‘May’, ‘June’, ‘July’, ‘August’, ‘September’, ‘October’, ‘November’, ‘December’][d.getMonth()];
 
                        case ‘yy’: return String(d.getFullYear()).substr(2);
 
                        case ‘yyyy’: return d.getFullYear();
 
                        case ‘h’: return d.getHours() % 12 || 12;
 
                        case ‘hh’: return zeroize(d.getHours() % 12 || 12);
 
                        case ‘H’: return d.getHours();
 
                        case ‘HH’: return zeroize(d.getHours());
 
                        case ‘m’: return d.getMinutes();
 
                        case ‘mm’: return zeroize(d.getMinutes());
 
                        case ‘s’: return d.getSeconds();
 
                        case ‘ss’: return zeroize(d.getSeconds());
 
                        case ‘l’: return zeroize(d.getMilliseconds(), 3);
 
                        case ‘L’: var m = d.getMilliseconds();
 
                            if (m > 99) m = Math.round(m / 10);
 
                            return zeroize(m);
 
                        case ‘tt’: return d.getHours() < 12 ? ‘am’ : ‘pm’;
 
                        case ‘TT’: return d.getHours() < 12 ? ‘AM’ : ‘PM’;
 
                        case ‘Z’: return d.toUTCString().match(/[A-Z]+$/);
 
                            // Return quoted strings with the surrounding quotes removed    
 
                        default: return $0.substr(1, $0.length – 2);
 
                    }
 
                });
 
            };
        }

        for (var i = 0, n = 0; i < this.length; i++) {  

6、IE和正规下有哪些宽容性的写法

var ev = ev || window.event

document.documentElement.clientWidth || document.body.clientWidth

var target = ev.srcElement||ev.target

选择原生js实现复制对象及扩展

jQueryextend()主意能很方便的实现增加对象方法,这里要得以完毕的是:使用原生js兑现复制对象,扩展对象,相符jQuery中的extend()方法

JavaScript

var obj1 = { name : ‘trigkit4’, age : 22 }; var obj2 = { name : ‘frank’,
age : 21, speak : function(){ alert(“hi, I’m + name “); } }; var obj3 ={
age : 20 }; function cloneObj(oldObj) { //复制对象方法 if
(typeof(oldObj) != ‘object’) return oldObj; if (oldObj == null) return
oldObj; var newObj = Object(); for (var i in oldObj) newObj[i] =
cloneObj(oldObj[i]); return newObj; } function extendObj() {
//扩张对象 var args = arguments;//将传递过来的参数数组赋值给args变量 if
(args.length < 2) return; var temp = cloneObj(args[0]);
//调用复制对象方法 for (var n = 1; n < args.length; n++) { for (var i
in args[n]) { temp[i] = args[n][i]; } } return temp; } var obj
=extendObj(obj1,obj2,obj3); console.log(obj);//{ name: ‘frank’, age: 20,
speak: [Function] } console.log(obj1);//{ name: ‘trigkit4’, age: 22 }
console.log(obj2);//{ name: ‘frank’, age: 21, speak: [Function] }
console.log(obj3);//{ age: 20 }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
var obj1 = {
    name : ‘trigkit4’,
    age : 22
};
var obj2 = {
    name : ‘frank’,
    age : 21,
    speak : function(){
        alert("hi, I’m + name ");
    }
};
 
var obj3 ={
    age : 20
};
 
function cloneObj(oldObj) { //复制对象方法
    if (typeof(oldObj) != ‘object’) return oldObj;
    if (oldObj == null) return oldObj;
    var newObj = Object();
    for (var i in oldObj)
        newObj[i] = cloneObj(oldObj[i]);
    return newObj;
}
 
function extendObj() { //扩展对象
    var args = arguments;//将传递过来的参数数组赋值给args变量
    if (args.length < 2) return;
    var temp = cloneObj(args[0]); //调用复制对象方法
    for (var n = 1; n < args.length; n++) {
        for (var i in args[n]) {
            temp[i] = args[n][i];
        }
    }
    return temp;
}
var obj =extendObj(obj1,obj2,obj3);
console.log(obj);//{ name: ‘frank’, age: 20, speak: [Function] }
console.log(obj1);//{ name: ‘trigkit4’, age: 22 }
console.log(obj2);//{ name: ‘frank’, age: 21, speak: [Function] }
console.log(obj3);//{ age: 20 }

            if (this[i] != this[dx]) {  

7、call和apply的区别

效果周边, 都以将日前函数作为钦赐对象的点子执行,
即函数中的this是点名对象

call(thisObj,arg1,arg2…)  //将全体参数七个一个传递踏向

apply(thisObj,[argArray])  //将全部参数放在数组中盛传

es5-safe 模块

es5-safe 模块里,仅扩张了足以较好落实的能够安全使用的生龙活虎部分方法,饱含:

JavaScript

Function.prototype.bind Object.create Object.keys Array.isArray
Array.prototype.forEach Array.prototype.map Array.prototype.filter
Array.prototype.every Array.prototype.some Array.prototype.reduce
Array.prototype.reduceRight Array.prototype.indexOf
Array.prototype.lastIndexOf String.prototype.trim Date.now

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Function.prototype.bind
Object.create
Object.keys
Array.isArray
Array.prototype.forEach
Array.prototype.map
Array.prototype.filter
Array.prototype.every
Array.prototype.some
Array.prototype.reduce
Array.prototype.reduceRight
Array.prototype.indexOf
Array.prototype.lastIndexOf
String.prototype.trim
Date.now

详情:

                this[n++] = this[i]  

8、怎样阻止事件冒泡和事件默许行为

//阻止事件冒泡

if(typeof ev.stopPropagation==’function’) {  //标准的

              ev.stopPropagation();

} else { //非标准IE

              window.event.cancelBubble = true;

}

//阻止事件暗中同意行为

return  false

指标的创导

JavaScript
扶持几体系型的对象:内部对象、生成的目的、宿主给出的靶子(如 Internet
浏览器中的 windowdocument)以及ActiveX 对象(外界组件卡塔 尔(阿拉伯语:قطر‎。

Microsoft Jscript 提供了 11
个内部(或“内置”)对象。它们是Array、Boolean、Date、Function、Global、Math、Number、Object、RegExp、Error
以及 String 对象。每八个对象有相关的方法和性质,

JavaScript中目的的创造有以下二种办法:

(1卡塔 尔(英语:State of Qatar)使用内置对象 (2卡塔尔国使用JSON符号 (3卡塔 尔(英语:State of Qatar)自定义对象协会

1
2
3
(1)使用内置对象
(2)使用JSON符号
(3)自定义对象构造

            }  

生机勃勃、使用内置对象

JavaScript可用的嵌入对象可分为三种:
1,JavaScript语言原生对象(语言级对象卡塔尔国,如String、Object、Function等;
2,JavaScript运营期的宿主对象(碰到宿主级对象卡塔 尔(英语:State of Qatar),如window、document、body等。

1
2
3
4
JavaScript可用的内置对象可分为两种:
 
1,JavaScript语言原生对象(语言级对象),如String、Object、Function等;
2,JavaScript运行期的宿主对象(环境宿主级对象),如window、document、body等。

        }  

9、 加多 删除 替换 插入到有个别成分的法子

element.appendChild()

element.insertBefore()

element.replaceChild()

element.removeChild()

置于对象列表

Array Boolean Date Error EvalError Function Infinity JSON Map Math NaN
Number Object ParallelArray Promise Proxy RegExp Set String Symbol
SyntaxError Uint32Array WeakSet decodeURI decodeURIComponent()
encodeURI() encodeURIComponent() escape()已废弃 eval() isFinite()
isNaN() null parseFloat parseInt undefined

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Array
Boolean
Date
Error
EvalError
Function
Infinity
JSON
Map
Math
NaN
Number
Object
ParallelArray
Promise
Proxy
RegExp
Set
String
Symbol
SyntaxError
Uint32Array
WeakSet
decodeURI
decodeURIComponent()
encodeURI()
encodeURIComponent()
escape()已废弃
eval()
isFinite()
isNaN()
null
parseFloat
parseInt
undefined

如上资料来源于:

        this.length -= 1  

10、javascript的松开对象和宿主对象

嵌入对象为Object, Array, Function, Date, Math等

宿主为浏览器自带的window 等

自定义对象组织

始建高端对象组织有三种方式:使用“this”关键字构造、使用原型prototype构造

    }  

11、window.onload和document ready的区别

window.onload 是在dom文书档案树加载完和颇负文件加载完事后实施八个函数

document.ready原生中向来不这几个艺术,jquery中有
$().ready(function),在dom文书档案树加载完今后实行二个函数(注意,那些中的文书档案树加载完不代表全数文书加载完卡塔尔国。

$(document).ready要比window.onload先执行

window.onload只好出去壹遍,$(document).ready能够现身数次

Date对象

 

12、”==”和“===”的不同

前面一个会自动转变类型

后人不会

get体系措施

getDate() 从 Date 对象回来三个月尾的某一天 (1 ~ 31)。 getDay() 从 Date
对象回到12日中的某一天 (0 ~ 6)。 getMonth() 从 Date 对象回来月份 (0 ~
11)。 getFullYear() 从 Date
对象以三位数字重回年份。注意不要采纳getYear()。 getHours() 重回 Date
对象的小时 (0 ~ 23)。 getMinutes() 重临 Date 对象的分钟 (0 ~ 59)。
getSeconds() 重临 Date 对象的秒数 (0 ~ 59)。 getMilliseconds() 重返 Date
对象的微秒(0 ~ 999)。 getTime() 再次回到 一九七〇 年 1 月 1 日于今的纳秒数。
getTimezoneOffset() 重临本地时间与格林威治规范时期 (威斯他霉素T) 的分钟差。
getUTCDate() 根据世界时从 Date 对象重回月初的一天 (1 ~ 31)。 getUTCDay()
依照世界时从 Date 对象回来周中的一天 (0 ~ 6)。 getUTCMonth()
依照世界时从 Date 对象回来月份 (0 ~ 11)。 getUTCFullYear() 依照世界时从
Date 对象回到二位数的年份。 getUTCHours() 依据世界时再次回到 Date 对象的小时(0 ~ 23)。 getUTCMinutes() 依照世界时重回 Date 对象的分钟 (0 ~ 59)。
getUTCSeconds() 依照世界时重临 Date 对象的分钟 (0 ~ 59)。
getUTCMilliseconds() 根据世界时再次回到 Date 对象的飞秒(0 ~ 999)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。
getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。
getMonth() 从 Date 对象返回月份 (0 ~ 11)。
getFullYear() 从 Date 对象以四位数字返回年份。注意不要使用getYear()。
getHours() 返回 Date 对象的小时 (0 ~ 23)。
getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。
getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。
getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。
getTime() 返回 1970 年 1 月 1 日至今的毫秒数。
getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。
getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。
getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。
getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)。
getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份。
getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)。
getUTCMinutes() 根据世界时返回 Date 对象的分钟 (0 ~ 59)。
getUTCSeconds() 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。
getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒(0 ~ 999)。

测量试验该措施

13、JavaScript是一门怎么的语言,它有如何特色?

javaScript一种直译式脚本语言,是后生可畏种动态类型、弱类型、基于原型的言语,内置支持项目。它的解释器被称为JavaScript引擎,为浏览器的风度翩翩某个,普及用于客户端的脚本语言,最先是在HTML网页上应用,用来给HTML网页增添动态作用。JavaScript兼容于ECMA规范,因而也叫做ECMAScript。

着力特色

1.
是大器晚成种解释性脚本语言(代码不举行预编译)。

2.
关键用以向HTML(行业内部通用标识语言下的八个采用卡塔尔页面增加人机联作行为。

3.
得以平素嵌入HTML页面,但写成独立的js文件有助于结议和表现的分离。

跨平台湾特务色,在一大半浏览器的支撑下,能够在几种阳台下运作(如Windows、Linux、Mac、Android、iOS等)

set类别措施

setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。 setMonth() 设置 Date
对象中月份 (0 ~ 11)。 setFullYear() 设置 Date
对象中的年份(四位数字卡塔尔。注意不要使用setYear()方法。 setHours() 设置
Date 对象中的小时 (0 ~ 23)。 setMinutes() 设置 Date 对象中的分钟 (0 ~
59)。 setSeconds() 设置 Date 对象中的分钟 (0 ~ 59)。 set米尔iseconds()
设置 Date 对象中的飞秒 (0 ~ 999)。 set提姆e() 以皮秒设置 Date 对象。
setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。
setUTCMonth() 依照世界时设置 Date 对象中的月份 (0 ~ 11)。
setUTCFullYear() 依照世界时设置 Date 对象中的年份(肆位数字卡塔 尔(英语:State of Qatar)。
setUTCHours() 根据世界时设置 Date 对象中的时辰 (0 ~ 23)。
setUTCMinutes() 依据世界时设置 Date 对象中的秒钟 (0 ~ 59)。
setUTCSeconds() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。
setUTC米尔iseconds() 依据世界时设置 Date 对象中的阿秒 (0 ~ 999)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。
setMonth() 设置 Date 对象中月份 (0 ~ 11)。
setFullYear() 设置 Date 对象中的年份(四位数字)。注意不要使用setYear()方法。
setHours() 设置 Date 对象中的小时 (0 ~ 23)。
setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。
setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。
setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。
setTime() 以毫秒设置 Date 对象。
setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。
setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)。
setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)。
setUTCHours() 根据世界时设置 Date 对象中的小时 (0 ~ 23)。
setUTCMinutes() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。
setUTCSeconds() 根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。
setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。

代码2

13、JavaScript的数据类型皆有如何?

主导数据类型:String,boolean,Number,Undefined, Null

引用数据类型:Object, Array, Function

那么难题来了,怎么着决断某变量是还是不是为数组数据类型?

办法生龙活虎.决断其是不是具备“数组性质”,如slice()方法。可和煦给该变量定义slice方法,故有的时候会失效

艺术二.obj instanceof Array 在有个别IE版本中不科学’

情势三.方法轻巧都有尾巴,在ECMA Script5中定义了新方式Array.isArray(),
保险其包容性,最棒的主意如下:

if(typeof Array.isArray===”undefined”){

        Array.isArray = function(arg){

                return Object.prototype.toString.call(arg)===”[object
Array]”

        };

};

toString种类措施

toString() 把 Date
对象转变为字符串,toString()总是回到七个用中式German表达的字符串。
toTimeString() 把 Date 对象的日子有些改换为字符串。 toDateString() 把
Date 对象的日子部分改造为字符串。 toUTCString() 依据世界时,把 Date
对象转变为字符串。 toLocaleString() 事务所方时间格式,把 Date
对象调换为字符串。 toLocaleTimeString() 依据本地时间格式,把 Date
对象的日子部分更改为字符串。 toLocaleDateString() 遵照本地时间格式,把
Date 对象的日期部分更换为字符串。

1
2
3
4
5
6
7
toString() 把 Date 对象转换为字符串,toString()总是返回一个用美式英语表达的字符串。
toTimeString() 把 Date 对象的时间部分转换为字符串。
toDateString() 把 Date 对象的日期部分转换为字符串。
toUTCString() 根据世界时,把 Date 对象转换为字符串。
toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串。
toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。
toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。

[javascript] 

14、看下列代码,输出什么?解释缘由。

var undefined;                                                       
                                                             
undefined == null; // true                                           
                                                                1 ==
true;  // true                                                       
                                                              2 ==
true;  // false                                                       
                                                              0 ==
false;  // true                                                       
                                                                0 ==
”;    // true                                                       
                                                                  NaN
== NaN;  // false                                                     
                                                          [] ==
false; // true                                                       
                                                                []
== ![];  // true                                                   
                                                               
undefined与null相等,但不恒等(===卡塔 尔(阿拉伯语:قطر‎                                 
                                             
二个是number多个是string时,会尝试将string转变为number尝试将boolean转换为number,0或1品尝将Object调换到number或string,决议于此外四个对计量的门类所以,对于0、空字符串的论断,提出使用
“===” 。“===”会先判断两侧的值类型,类型不相称时为false。

那便是说难题来了,看下边包车型大巴代码,输出什么,foo的值怎么?

var foo = “11”+2-“1”;                                                 
                                      console.log(foo);               
                                                                     
                      console.log(typeof
foo);实践完后foo的值为111,foo的项目为String。

Array对象

$(function () { var arr = [1, 2, 3];  

属性

constructor 钦点创设对象原型的函数。 index
借使数组是透过正则表达式相称成立的,比配是字符串的下标索引为0. input
要是数组是经过正则表明式匹配创设的,再次来到原始的字符串。 length长度
再次来到数组相月素个数. prototype 允许为富有指标附加属性.

1
2
3
4
5
6
7
8
9
10
11
12
13
constructor
    指定创建对象原型的函数。
 
index
    如果数组是通过正则表达式匹配创建的,比配是字符串的下标索引为0.
 
input
    如果数组是通过正则表达式匹配创建的,返回原始的字符串。
length长度
    返回数组中元素个数.
 
prototype
    允许为所有对象附加属性.

       arr.remove(1);  

15、已知有字符串foo=”get-element-by-id”,写一个function将其转会成驼峰表示法”getElementById”。

function combo(msg){

      var arr=msg.split(“-“);

      for(var i=1;i<arr.length;i++){

              arr[i]=arr[i].charAt(0).toUpperCase()+arr[i]

            .substr(1,arr[i].length-1);

      }

    msg=arr.join(“”);

    return msg;

}

方法

这么些方法能够修正数组自个儿:

pop 移除数组的末梢三个要素,重返值是被去除的因素。 push
在数组的最终增多叁个依旧多少个成分,再次来到值是新的数组的长度。 reverse
颠最后多少个组桐月素的逐个,原先第多少个成分现在改为最终五个,同样原先的结尾叁个要素变为了前几天的第八个,也等于数组的目录发生了改变。
shift 删除数组的第二个因素,再次回到值是剔除的要素。 sort
对数组中的成分实行排序。 splice 增多或删除数组中的三个或五个要素。
unshift 增添三个要么三个成分在数组的启幕,再次回到值是新的数组的尺寸。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
pop
    移除数组的最后一个元素,返回值是被删除的元素。
 
push
    在数组的末尾添加一个或者多个元素,返回值是新的数组的长度。
 
reverse
    颠倒数组中元素的顺序,原先第一个元素现在变成最后一个,同样原先的最后一个元素变成了现在的第一个,也就是数组的索引发生了变化。
 
shift
    删除数组的第一个元素,返回值是删除的元素。
 
sort
    对数组中的元素进行排序。
 
splice
    添加或删除数组中的一个或多个元素。
 
unshift
    添加一个或者多个元素在数组的开头,返回值是新的数组的长度。

       var s=”;  

16、var numberArray = [3,6,2,4,1,5];(考察根基API卡塔尔

1) 实现对该数组的倒排,输出[5,1,4,2,6,3]

numberArray.reverse()

2) 完成对该数组的降序排列,输出[6,5,4,3,2,1]

numberArray.sort(function(a,b){  returnn b-a  })

Accessor 方法

这一个进度不变数组自己

concat 重临一个满含此数组和其余数组和/或值的重新整合的新数组 indexOf
再次来到第叁个与给定参数相等的数组成分的目录,未有找到则赶回-1。 join
将持有的数组成分连接成三个字符串。 lastIndexOf
重返在数组中搜索到的与给定参数相等的因素的尾声(最大卡塔尔索引。 slice
再次回到数组中的意气风发段。 toSource Returns an array literal representing the
specified array; you can use this value to create a new array. Overrides
the Object.toSource method. toString
重返代表该数组及其成分的字符,重写Object.toString 进度. valueOf Returns
the primitive value of the array. Overrides the Object.valueOf method.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
concat
    返回一个包含此数组和其他数组和/或值的结合的新数组
indexOf
    返回第一个与给定参数相等的数组元素的索引,没有找到则返回-1。
join
    将所有的数组元素连接成一个字符串。
 
lastIndexOf
    返回在数组中搜索到的与给定参数相等的元素的最后(最大)索引。
 
slice
    返回数组中的一段。
 
toSource
    Returns an array literal representing the specified array; you can use this value to create a new array. Overrides the Object.toSource method.
 
toString
    返回代表该数组及其元素的字符,重写Object.toString 过程.
 
valueOf
    Returns the primitive value of the array. Overrides the Object.valueOf method.

       for(var i=0;i<arr.length;i++){  

17、输出昨天的日子,以YYYY-MM-DD的点子,譬如今日是2016年12月二十六日,则输出二〇一六-09-26

var d = new Date();

var year = d.getFullYear();    // 获取年,getFullYear()重临4位的数字

var month = d.getMonth() + 1;  //
获取月,月份相比特殊,0是七月,11是八月

month = month < 10 ? ‘0’ + month : month;    // 形成两位

var day = d.getDate();    // 获取日

day = day < 10 ? ‘0’ + day : day;

alert(year + ‘-‘ + month +’-‘ + day);

循环(迭代)过程

filter
对数组中的每三个成分调用参数中内定的过滤函数,并将对此过滤函数重返值为true的那一个数组成分集结为新的数组重临。
forEach 对数组的每三个要素依次调用参数中内定的函数。 every
就算数组中每三个要素都满意参数中提供的测量检验函数,则赶回真。 map Creates a
new array with the results of calling a provided function on every
element in this array. some
要是数组中最稀少一个要素知足参数函数的测验,则赶回true。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
filter
    对数组中的每一个元素调用参数中指定的过滤函数,并将对于过滤函数返回值为true的那些数组元素集合为新的数组返回。
 
forEach
    对数组的每一个元素依次调用参数中指定的函数。
 
every
    如果数组中每一个元素都满足参数中提供的测试函数,则返回真。
 
map
    Creates a new array with the results of calling a provided function on every element in this array.
 
some
    如果数组中至少有一个元素满足参数函数的测试,则返回true。

           s = s + arr[i]+’,’;  

总结:

变动原数组的办法:pop()、push()、reverse()、shift()、sort()、splice()、unshift()
不改造原数组的措施:concat()、join()、slice()、toString()

1
2
3
改变原数组的方法:pop()、push()、reverse()、shift()、sort()、splice()、unshift()
 
不改变原数组的方法:concat()、join()、slice()、toString()

       }  

18、将字符串”<tr><td>{$id}</td><td>{$name}</td></tr>”中的{$id}替换到10,{$name}替换来Tony (使用正则表明式卡塔 尔(英语:State of Qatar)

`<tr>                                                         
                                                               
<td>  {$id}  </td>                                       
                                                          <td>
{$id}_{$name} </td>                                           
                              </tr>`.replace(/{$id}/g,
’10’).replace(/{$name}/g, ‘Tony’);

Boolean

       alert(s.substring(0,s.length-1));  

19、为了有限帮助页面输出安全,大家常常索要对一些非正规的字符实行转义,请写叁个函数escapeHtml,将<, >, &, “实行转义

function escapeHtml(str) {

      return str.replace(/[<>”&]/g, function(match) {   

      switch (match) {

                  case “<”:

                      return “<”;

                  case “>”:

                      return “ >”;

                  case “&”:

                      return “&”;

                  case “””:

                      return “””;

      }  });}

属性

JavaScript

Boolean.length 长度属性,值为1. Boolean.prototype
象征Boolean构造器的原型.

1
2
3
4
Boolean.length
    长度属性,值为1.
Boolean.prototype
    代表Boolean构造器的原型.

   });  

方法

JavaScript

Boolean.prototype.toSource() Boolean.prototype.toString()
Boolean.prototype.valueOf()

1
2
3
Boolean.prototype.toSource()
Boolean.prototype.toString()
Boolean.prototype.valueOf()

 

19、foo = foo||bar ,那行代码是什么意思?为什么要那样写?

假诺foo存在,值不改变,不然把bar的值赋给foo。

闭塞表明式:作为”&&”和”||”操作符的操作数表明式,那么些表达式在扩充求值时,只要最后的结果早已足以规定是真或假,求值进程便告终止,那称之为短路求值。

mic6f$�Y

String 对象

数组是从0开端编号,因而删除的成分是“2”,输出的结果为“1,3”,正确。

20、看下列代码,将会输出什么?(变量评释提高)

var foo = 1;

(function(){

    console.log(foo);

    var foo = 2;

    console.log(foo);

})()

答案:输出undefined 和 2。上边代码也就是:

var foo = 1;

(function(){

    var foo;

    console.log(foo); //undefined

    foo = 2;

    console.log(foo); // 2; 

})()

函数表明与变量注明会被JavaScript引擎隐式地升级到当下成效域的最上端,然则只升高名称不会进级赋值部分

属性

JavaScript

String.length String.prototype

1
2
String.length
String.prototype

w3school给的解说是:prototype让你有力量给指标增加属性和方法。由于JavaSript未有类的概念,由此也不恐怕向面向对象语言相同有一而再三番两次。prototype就是为了消除此主题材料,为开辟者展开了意气风发扇门,通过那扇门,开荒者能够在目的上定义属性和办法,然后在起头化一个变量,比方数组,那么该数组就有着了对新定义的质量和方式的二个援引(能够将其精晓为是对Array对象新定义属性和章程的“世襲”卡塔尔。有的人会将“代码1”中的代码掌握为是赋值,那是无比不确切的。假诺是赋值,那么将会指向内存中同一块区域,当时当大家只要在“代码2”中再伊始化三个数组的话,数组1和数组2分头调用remove()方法,将不会受到震慑。

方法:

JavaScript

charAt() 方法可回到钦命地方的字符。stringObject.charAt(index)
charCodeAt() 方法可回到钦定地点的字符的 Unicode 编码。那么些再次回到值是 0 –
65535 之间的整数。 stringObject.charCodeAt(index) concat()
方法用于连接五个或多个字符串。 stringObject.concat(stringX, stringX, …,
stringX) indexOf()
方法可回到某些钦赐的字符串值在字符串中第叁遍现身的地点。
stringObject.indexOf(searchvalue, fromindex) lastIndexOf()
方法可回到三个内定的字符串值最终现身的职位,在八个字符串中的钦定地点从后迈入搜索。
localeCompare():用本地特定的逐条来比较四个字符串stringObject.localeCompare(target)
match() 方法可在字符串内搜寻内定的值,或找到一个或多少个正则表明式的合作。
该办法近似 indexOf() 和
lastIndexOf(),但是它回到钦定的值,并非字符串之处。
stringObject.match(regexp) replace()
方法用于在字符串中用一些字符替换另一些字符,或沟通三个与正则表明式匹配的子串。stringObject.replace(regexp/substr,
replacement) search()
方法用于检索字符串中钦命的子字符串,或查究与正则表明式相相称的子字符串。
stringObject.search(regexp) slice()
方法可领取字符串的某部部分,并以新的字符串重临被提取的某些。
stringObject.slice(start, end)
substring()不推荐应用,提议接受slice()替代。
substr()不引入应用,建议利用slice()替代。
toLocaleLowerCase()不引进应用,只在土耳其共和国(Türkiye Cumhuriyeti卡塔尔语等少数语种中有用,建议利用toLowerCase()取代。
toLocaleUpperCase()不推荐应用,只在土耳其(Turkey卡塔尔国语等少数语种中有用,提议利用toUpperCase()代替。
toLowerCase() 方法用于把字符串调换为小写。 toUpperCase()
方法用于把字符串转变为大写。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
charAt() 方法可返回指定位置的字符。stringObject.charAt(index)
 
charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 – 65535 之间的整数。 stringObject.charCodeAt(index)
 
concat() 方法用于连接两个或多个字符串。
stringObject.concat(stringX, stringX, …, stringX)
  
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
stringObject.indexOf(searchvalue, fromindex)
 
lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。
 
localeCompare():用本地特定的顺序来比较两个字符串stringObject.localeCompare(target)
 
match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。
stringObject.match(regexp)
 
 
replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。stringObject.replace(regexp/substr, replacement)
 
search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。
stringObject.search(regexp)
 
slice() 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。
stringObject.slice(start, end)
 
substring()不推荐使用,建议使用slice()替代。
 
substr()不推荐使用,建议使用slice()替代。
 
toLocaleLowerCase()不推荐使用,只在土耳其语等少数语种中有用,建议使用toLowerCase()替代。
 
toLocaleUpperCase()不推荐使用,只在土耳其语等少数语种中有用,建议使用toUpperCase()替代。
 
toLowerCase() 方法用于把字符串转换为小写。
 
toUpperCase() 方法用于把字符串转换为大写。

注意:String 对象的法子 slice()、substring()substr()
都可重临字符串的钦命部分。刚毅提出在具备场合都施用 slice()方法。

 

20、用js完成自由筛选10–100时期的12个数字,存入叁个数组,并列排在一条线序。

function randomNub(aArray, len, min, max) {

              if (len >= (max – min)) {

                  return ‘超越’ + min + ‘-‘ + max + ‘之间的个数范围’ +
(max – min – 1) + ‘个的总和’;

              }

              if (aArray.length >= len) {

                  aArray.sort(function(a, b) {

                      return a – b

                  });

                  return aArray;

              }

              var nowNub =parseInt(Math.random() * (max – min – 1)) +

  • 1);             

              for (var j = 0; j < aArray.length; j++) {

                  if (nowNub == aArray[j]) {

                      randomNub(aArray, len, min, max);               

                        return;                 

                  }

              }             

              aArray.push(nowNub);

              randomNub(aArray, len, min, max);

              return aArray;         

    }

var arr=[];

randomNub(arr,10,10,100);

RegExp对象

上面在Date对象达成了Format()方法,这一个向来也用得比比较多。

21、 把五个数组合併,并剔除第叁个因素。

var array1 = [‘a’,’b’,’c’];

var bArray = [‘d’,’e’,’f’];

var cArray = array1.concat(bArray);

cArray.splice(1,1);

属性

RegExp.prototype.constructor 创造该正则对象的构造函数。
RegExp.prototype.global
是还是不是开启全局相称,约等于特别指标字符串中兼有望的相称项,实际不是只进行第一次相配。
RegExp.prototype.ignoreCase 在相配字符串时是还是不是要不经意字符的大大小小写。
RegExp.prototype.lastIndex 后一次协作起来的字符串索引地点。
RegExp.prototype.multiline 是或不是张开多行形式相配(影响 ^ 和 $ 的一言一动卡塔 尔(阿拉伯语:قطر‎RegExp.prototype.source 正则对象的源形式文本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
RegExp.prototype.constructor
创建该正则对象的构造函数。
RegExp.prototype.global
是否开启全局匹配,也就是匹配目标字符串中所有可能的匹配项,而不是只进行第一次匹配。
 
RegExp.prototype.ignoreCase
在匹配字符串时是否要忽略字符的大小写。
 
RegExp.prototype.lastIndex
下次匹配开始的字符串索引位置。
 
RegExp.prototype.multiline
是否开启多行模式匹配(影响 ^ 和 $ 的行为)
 
RegExp.prototype.source
正则对象的源模式文本。

 

方法

JavaScript

RegExp.prototype.exec() 在目的字符串中实践二次正则相配操作。
RegExp.prototype.test() 测量检验当前正则是或不是能协作目的字符串。
RegExp.prototype.toString()
再次来到一个字符串,其值为该正则对象的字面量情势。覆盖了Object.prototype.toString()
方法。

1
2
3
4
5
6
7
RegExp.prototype.exec()
    在目标字符串中执行一次正则匹配操作。
RegExp.prototype.test()
    测试当前正则是否能匹配目标字符串。
RegExp.prototype.toString()
    返回一个字符串,其值为该正则对象的字面量形式。覆盖了Object.prototype.toString() 方法。

[javascript]  

22、  怎么着增加、移除、移动、复制、创制和查找节点(原生JS,实在底蕴,没细写每一步卡塔尔国

1卡塔 尔(英语:State of Qatar)创设新节点

createDocumentFragment()    //成立叁个DOM片段

createElement()  //成立三个现实的要素

createTextNode()  //创造三个文件节点

2)添加、移除、替换、插入

appendChild()      //添加

removeChild()      //移除

replaceChild()      //替换

insertBefore()      //插入

3)查找

getElementsByTagName()    //通过标具名称

getElementsByName()    //

通过元素的Name属性的值

getElementById()        //

通过成分Id,唯风度翩翩性没细

Object对象

当以非构造函数格局被调用时,Object 等同于 new Object()

   // Date对象上得以达成Format方法,将 Date 转变为内定格式的String  

23、  有这么贰个UPRADOL:, b:’2′, c:”, d:’xxx’, e:undefined}。

function serilizeUrl(url) {

    var urlObject = {};

    if (/?/.test(url)) {

        var urlString = url.substring(url.indexOf(“?”) + 1);

        var urlArray = urlString.split(“&”);

        for (var i = 0, len = urlArray.length; i < len; i++) {

            var urlItem = urlArray[i];

            var item = urlItem.split(“=”);

            urlObject[item[0]] = item[1];

        }

        return urlObject;

    }

    return null;

}

性能或措施

Object的各种实例都有所同盟的主干品质和议程

属性或者方法 说明
constructor 指向创建当前对象的构造函数
hasOwnProperty(name) 检测给定属性name在实例对象(不是原型对象)中是否存在。name以字符串形式指定
isPropertyOf(object) 检测传入的对象object是否该方法调用者的原型对象。一般格式:Class.prototype.isPropertyOf(object)
propertyIsEnumerable(pr) 检测属性pr能否用for-in循环枚举。属性pro用字符串形式指定
toLocaleString() 返回对象的字符串表示。与地区和环境对应
toString() 返回对象的字符串表示
valueOf() 返回对象的字符串、数值或布尔值表示

   // 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
  

24 、 正则表达式构造函数var reg=new RegExp(“xxx”)与正则表达字面量var reg=//有啥区别?相称邮箱的正则表达式?

当使用RegExp()构造函数的时候,不仅仅须要转义引号(即”表示”卡塔尔国,而且还亟需双反斜杠(即\意味着一个卡塔 尔(阿拉伯语:قطر‎。使用正则表明字面量的频率越来越高。

邮箱的正则匹配:

var regMail =
/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/;

静态方法

JavaScript

Object.create(prototype, descriptors)
以钦赐的原型创立对象,并且能够(可选卡塔尔国的安装对象的属性
Object.defineProperty(object, propertyname, descriptor)
对内定的靶子的三个属性设置增添的值调整 Object.defineProperties(object,
descriptors) 对内定的靶子的生龙活虎组属性提供足够的值控制Object.getOwnPropertyDescriptor(object, propertyname) 重返属性的概念
Object.getOwnPropertyNames(object)
重临全体属性的名目,哪怕说是不可能枚举的属性
Object.preventExtensions(object) 幸免新的品质增多到对象
Object.isExtensible(object) 是还是不是可增添属性到目的 Object.seal(object)
阻止向钦定对象增添新属性或删除现存属性 Object.freeze(object)
幸免现成属性和属性值的改良,并制止新特色的丰硕。 Object.isFrozen(object)
检查当前目的是或不是已冻结 Object.getPrototypeOf(object) 重回钦点对象的原型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Object.create(prototype, descriptors)
以指定的原型创建对象,并且可以(可选)的设置对象的属性
        
Object.defineProperty(object, propertyname, descriptor)
对指定的对象的一个属性设置丰富的值控制
 
Object.defineProperties(object, descriptors)
对指定的对象的一组属性提供丰富的值控制        
    
Object.getOwnPropertyDescriptor(object, propertyname)
返回属性的定义
 
Object.getOwnPropertyNames(object)
返回所有属性的名称,哪怕说是不能枚举的属性
 
Object.preventExtensions(object)
防止新的属性添加到对象
 
Object.isExtensible(object)
是否可添加属性到对象
 
Object.seal(object)
阻止向指定对象添加新属性或删除现有属性
 
Object.freeze(object)
防止现有属性和属性值的修改,并防止新特性的添加。
 
Object.isFrozen(object)
检查当前对象是否已冻结
 
Object.getPrototypeOf(object)
返回指定对象的原型

   // 年(y)能够用 1-4 个占位符,纳秒(S)只可以用 1 个占位符(是 1-3
位的数字)   

25、 看上面代码,给出输出结果。

for(var i=1;i<=3;i++){

      setTimeout(function(){

              console.log(i);

        },0);

};    答案:4 4 4。

原因:回调函数是在for甘休之后才运营的。 怎么样让上述代码输出1 2 3?

for(var i=1;i<=3;i++){

      setTimeout((function(j){  //改成当下奉行函数

                console.log(j);

      })(i),0);

};

大局属性和方式

   // 使用方法:   

全局方法

太阳集团游戏官方网站 3

   // (new Date()).Format(“yyyy-MM-dd hh:mm:ss.S”) -> 2014-04-16
10:12:30.526  

26、  写二个function,杀绝字符串前后的空格。(包容全数浏览器卡塔 尔(英语:State of Qatar)

if (!String.prototype.trim) {

      String.prototype.trim = function() {

              return this.replace(/^s+/, “”).replace(/s+$/,””);

        }

}

//测试    var str = ” tn test string “.trim();

            alert(str== “test string”); // alerts “true”

全局属性

太阳集团游戏官方网站 4

1 赞 3 收藏
评论

太阳集团游戏官方网站 5

   // (new Date()).Format(“yyyy-M-d h:m:s.S”)      -> 2014-4-16
7:6:9.25  

27、 1.    Javascript中, 以下哪条语句一定会发出运维错误?     

A、var obj = ();                  B、 var obj = [];                 
  C、  var obj = {};        D、 var obj = //;                E、var
obj = NaN;            AD错误

Date.prototype.Format = function (fmt) {  

       var o = {  

28、  以下五个变量a和b,a+b的哪位结果是NaN?

      答案(  AC  )

A、var a=undefined;  b=NaN                B、var a= ‘123’;b=NaN

C、var a =undefined , b =NaN            D、 var a=NaN , b=’undefined’ 

           “M+”: this.getMonth() + 1, //月份   

           “d+”: this.getDate(), //日   

29、var a=10; b=20; c=4;  ++b+c+a++ 以下哪些结果是没有疑问的?

A 34  B、35  C、36  D、37    答案(  B  )

           “h+”: this.getHours(), //小时   

           “m+”: this.getMinutes(), //分   

30、 完毕检索当前页面中的表单成分中的全部文本框,并将它们整个清空

for(vari=0;i< document.forms.length; i++){

      for(var j=0;j< document.forms.elements.length; j++){

            if(document.forms.elements[j].type==”text”)

                  document.forms.elements[j].value=””;

      }

}

           “s+”: this.getSeconds(), //秒   

31、  要将页面包车型地铁景观栏中展现“已经入选该文本框”,下列JavaScript语句精确的是( A 卡塔 尔(英语:State of Qatar)

           “q+”: Math.floor((this.getMonth() + 3) / 3), //季度   

A. window.status=”已经入选该文本框”                                   
                        B. document.status=”已经入选该文本框”         
                                                C.
window.screen=”已经入选该文本框”                                     
                      D. document.screen=”已经入选该文本框”

           “S”: this.getMilliseconds() //毫秒   

       };  

32、  请选用结果为真正表明式:(C卡塔尔国

A.null instanceof Object                                             
                                B.null === undefined                 
                                                                     
C.null == undefined                                                   
                                D.NaN == NaN

       // RegExp.$1 赶回相称的第4个字符串(以括号为标记卡塔 尔(英语:State of Qatar)  

       if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1,
(this.getFullYear() + “”).substr(4 – RegExp.$1.length));  

33、 解析代码,得出准确的结果。

var a=10, b=20 , c=30;                                               
                                ++a;                                 
                                                                     
      a++;                                                           
                                                        e=++a + (++b)

  • (c++) + a++;                                                       
                  alert(e);弹出提示对话框:77

       for (var k in o) {  

           if (new RegExp(“(” + k + “)”).test(fmt)) fmt =
fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : ((“00” +
o[k]).substr((“” + o[k]).length)));  

34、 写出函数Date德姆o的回来结果,系统时间风姿洒脱旦为明天

function DateDemo(){

      var d, s=”后天日子是:”;

      d = new Date();              s += d.getMonth() +1+ “/”;

      s += d.getDate() + “/”;          s += d.getFullYear();

      return s;

}          结果:明日日期是:01/18/2018

       }  

       return fmt;  

35、  写出程序运行的结果?

   }  

for(i=0, j=0; i<10, j<6; i++, j++){

      k = i + j;      }                //结果:10

 

在这里个事例中有一个正则表达式的选择,RegExp.$1能够再次来到第1个地位非常的字符串,上边用叁个事例来验证难题。

36、  阅读以下代码,请解析出结果:

[javascript]  

var arr = new Array(1 ,3 ,5);                                         
                                arr[4]=’z’;                         
                                                                     
            arr2 = arr.reverse();                                     
                                                      arr3 =
arr.concat(arr2);                                                     
                              alert(arr3);                   
//z,,5,3,1,z,,5,3,1

$(function () {  

       var r = /^(d{4})-(d{1,2})-(d{1,2})$/;  

37、写出大致描述html标签(不带属性的始发标签和得了标签卡塔 尔(阿拉伯语:قطر‎的正则表明式,并将以下字符串中的html标签去除掉

var str = “<div>  这里是div  <p>里面包车型大巴段落</p> 
</div>;

<script type=”text/javascript>”;

      var reg = /< /?w+ /?>/gi;

      var str = “<div>   这里是div < p>里面包车型大巴段落
</p>  </div>”;

      alert(str.replace(reg,””));

</script>

        r.exec(‘1988-01-10’);  

        s1 = RegExp.$1;  

38、  截取字符串abcdefg的efg

alert(‘abcdefg’.substring(4));   

        s2 = RegExp.$2;  

        s3 = RegExp.$3;  

39、  列举浏览器对象模型BOM里常用的足足4个指标,并列举window对象的常用方法最少5个

对象:window, document, location, screen, history, navigator

方法:alert(),  confirm(),  prompt(),  open(),  close()

        alert(s1 + “,” + s2 + “,” + s3)   

});  

40、  Javascript创设对象的二种情势?

 

1、var obj = {};(使用json创制对象卡塔 尔(英语:State of Qatar)                                 
                              如:obj.name = ‘张三’;                 
                                                                   
​obj.action = function (){alert(‘吃饭’);}​;                           
                                    2、var obj = new
Object();(使用Object创制对象卡塔 尔(英语:State of Qatar)                                       
  如:obj.name = ‘张三’;                                             
                                        ​obj.action = function
(){alert(‘吃饭’);}​;                                                 
              3、​通过构造函数成立对象。                             
                                          (1)、使用this关键字​如:   
                                                                     
    var obj = function (){                                           
                                                        this.name
=’张三’;                                                             
                                  this.age = 19;                     
                                                                     
          this.action = function (){                                 
                                                           
alert(‘吃饭’);                                                       
                                }​;}                                 
                                                                     
              ​(2)、使用prototype关键字如:                           
                                                function obj (){     
                                                                     
                      ​      obj.prototype.name =’张三’;             
                                                                 
​obj.prototype.action=function (){                                   
                                          alert(‘吃饭’);             
                                                                     
        }}​;                                                         
                                                             
4、使用内置对象创造对象。                                             
                          如:var str = new
String(“实例初步化String”);                                           
              var str1 = “直接赋值的String”;                         
                                                  var func = new
Function(“x”,”alert(x)”);        //示例开首化func                     
      var obj = new Object();        //示例起首化二个Object

归来的结果:壹玖玖零,01,10

本文首若是对JavaSript的prototype属性使用体验进行总计,程序开辟中太多时候我们习于旧贯了“.”这几个操作符,通过该操作符来引出对象放置的习性和办法,不过一些时候绝比不上小编辈期望的那么外人啥事都为大家绸缪好了,prototype属性让我们能在对象上自定义方法和性子。

41、事件绑定和日常事件有啥样界别

日常增多事件的主意:

var btn = document.getElementById(“hello”);

btn.onclick = function(){    alert(1);  }

btn.onclick = function(){    alert(2);  }

施行上面包车型地铁代码只会 alert 2

事件绑定情势丰裕事件:

var btn = document.getElementById(“hello”);

btn.addEventListener(“click”,function(){    alert(1);  },false);

btn.addEventListener(“click”,function(){    alert(2);  },false);

奉行下面的代码会先alert 1 再alert 2

常备增加事件的法子不帮忙增多多少个事件,最下面包车型客车事件会覆盖上面的,而事件绑定(add伊夫ntListener卡塔 尔(阿拉伯语:قطر‎情势足够事件可以增进四个。

addEventListener不包容低版本IE

平时事件不可能撤废

addEventLisntener还扶植事件冒泡+事件捕获           

发表评论

电子邮件地址不会被公开。 必填项已用*标注