惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
C
Cisco Blogs
Scott Helme
Scott Helme
Know Your Adversary
Know Your Adversary
NISL@THU
NISL@THU
C
Cyber Attacks, Cyber Crime and Cyber Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Schneier on Security
I
Intezer
Spread Privacy
Spread Privacy
AWS News Blog
AWS News Blog
V
Vulnerabilities – Threatpost
Cloudbric
Cloudbric
V2EX - 技术
V2EX - 技术
Google Online Security Blog
Google Online Security Blog
L
Lohrmann on Cybersecurity
Recent Commits to openclaw:main
Recent Commits to openclaw:main
L
LINUX DO - 热门话题
S
Secure Thoughts
T
The Exploit Database - CXSecurity.com
博客园 - 【当耐特】
Recent Announcements
Recent Announcements
Security Archives - TechRepublic
Security Archives - TechRepublic
Stack Overflow Blog
Stack Overflow Blog
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
K
Kaspersky official blog
阮一峰的网络日志
阮一峰的网络日志
博客园_首页
Latest news
Latest news
B
Blog
F
Full Disclosure
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
L
LangChain Blog
GbyAI
GbyAI
Last Week in AI
Last Week in AI
S
Security Affairs
Apple Machine Learning Research
Apple Machine Learning Research
N
Netflix TechBlog - Medium
Security Latest
Security Latest
Vercel News
Vercel News
Y
Y Combinator Blog
G
GRAHAM CLULEY
S
Securelist
T
Troy Hunt's Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
雷峰网
雷峰网

博客园 - 匆匆

Grunt常见问题 一个小型的类库 JavaScript 设计模式 HTML5常见问题 改版提示,新手指南 前端开发规范文档 常用正则表达式 JavaScript String 对象扩展方法 JavaScript String 对象常用方法 JavaScript Array 对象扩展方法 JavaScript Array 对象常用方法 JavaScript 常见基础问题二 JavaScript与网页性能 跨浏览器的本地存储解决方案 页面中添加事件、阻止事件传播、事件删除 常用CSS书写技巧 Gridview用法大总结(牛年珍藏版) 总结一些常用功能源码 JS类库
JavaScript 常见基础问题一
匆匆 · 2012-04-04 · via 博客园 - 匆匆

1、JavaScript:window.onload操作

//JavaScript:window.onload操作 
function first() { 
    alert('first');
}
function second() {
    alert('second');
}
window.onload = first;
window.onload = second;
//只会执行第二个window.onload;

//不过可以通过以下方法来进行改进: 
window.onload = function(){
    first(); 
    second();
} 

2、判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母、数字、下划线,总长度为5-20

str = "hello";
var reg = /^[a-zA-Z][a-zA-Z_0-9]{4,19}$/;
console.log(reg.test(str));

3、写出几种this的应用

function Car(color,brand){
    this.color = color;
    this.brand = brand;
}

<input type="button" onclick="show(this);" value="点击一下" />

var btn = document.getElementById("Example");
btn.addEventListener("click", function () {
    console.log(this.innerHTML);
}, false);

4、typeof用法举例

var a; //undefined
var a = -1.9; //number
var a = "-1.9"; //string
var a = function () { }; //function
var a = true; //boolean
var a = new Array(); //object
var a = {}; //object
var a = null; //object
可以使用 typeof 来获取一个变量是否存在,如 if(typeof a!="undefined"){alert("ok")},而不要去使用 if(a) 因为如果 a 不存在(未声明)则会出错,对于 Array,Null 等特殊对象使用 typeof 一律返回 object,这正是 typeof 的局限性。

5、函数参数

function add(a,b,c,d){
    console.log(arguments.length); 
    return a+b+c+d;
}
console.log(add.length); 
console.log(add(1,1)); 
console.log(add(1,1,1,1,1)); 
以上代码控制台分别输出:4,2,NaN,5,4
Arguments对象的length属性是实际传递给函数的参数个数,可以比申明的参数个数多,也可以比申明的参数个数少。
Function对象的length属性是在定义函数时声明已命名的参数的个数(a,b,c,d)。

6、JavaScript是一种基于对象的语言,JavaScript中可以使用哪几种对象

Javascript对象总的来分可以分为三大类:
①内部对象
Js中的内部对象包括Array、Boolean、Date、Function、Global、Math、Number、Object、RegExp、String以及各种错误类对象,包括Error、EvalError、RangeError、ReferenceError、SyntaxError和TypeError。
其中Global和Math这两个对象又被称为“内置对象”,这两个对象在脚本程序初始化时被创建,不必实例化这两个对象。
②宿主对象
宿主对象就是执行JS脚本的环境提供的对象。对于嵌入到网页中的JS来说,其宿主对象就是浏览器提供的对象,所以又称为浏览器对象,如IE、Firefox等浏览器提供的对象。不同的浏览器提供的宿主对象可能不同,即使提供的对象相同,其实现方式也大相径庭!这会带来浏览器兼容问题,增加开发难度。
浏览器对象有很多,如Window和Document等等。
③自定义对象
顾名思义,就是开发人员自己定义的对象。JS允许使用自定义对象,使JS应用及功能得到扩充

7、闭包如何理解?举个栗子?

简单地说:当一个函数返回它内部定义的一个函数时,就产生了一个闭包。
function closure() {
    var count = 0;
    var get = function () {
        count++;
        return count;
    };
    return get;
}
var a = closure();
var b = closure();
console.log(a()); //1
console.log(a()); //2
console.log(b()); //1
以上代码生成两个闭包实例,在内存中生成了相互独立的副本,它们内部引用的count变量分别属于各自的运行环境。

8、解释call, apply的用法?

1)apply
语法:function.apply(thisobj, args)
参数:thisobj (调用function的对象,在函数主体中,thisobj是关键字this的值)
args (一个数组,它的元素是要传递给函数function的参数值)
描述:apply()将指定的函数function作为对象thisobj的方法来调用,传递给它的是存放在数组args中的参数,返回的是调用function的返回值。在函数体内,关键字this引用thisobj对象。
参数args必须是数组或Arguments对象。如果想单独指定传递给函数的参数,而不是指定数组元素,则使用Function.call()方法。
2)call
obj1.method1.call(obj2,argument1,argument2)
如上,call的作用就是把obj1的方法放到obj2上使用,后面的argument1..这些做为参数传入.
两个方法用法一样,区别是参数不同。当参数明确时可用call, 当参数不明确时可用apply给合arguments。

案例用call、apply可以实现多继承:
function Add() { this.showAdd = function (a, b) { alert(a + b); } } function Sub() { this.showSub = function (a, b) { alert(a - b); } } function Example() { Add.call(this); Sub.apply(this); } var e = new Example(1, 2); e.showAdd(1, 1); //2 e.showSub(1, 1); //0

9、跨域解决方案?

a、document.domain+iframe的设置
b、动态创建script
c、利用iframe和location.hash
d、利用flash

10、POST和GET的区别?

a. 根据HTTP规范,GET用于从服务器上获取信息,POST是向服务器传送数据,表示可能修改变服务器上的资源的请求。
b. GET是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。POST是通过HTTP POST机制,将表单内各个字段与其内容放置在HTML   HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
c. 对于GET方式,服务器端用Request.QueryString获取变量的值,对于POST方式,服务器端用Request.Form获取提交的数据。
d. GET传送的数据量较小,不能大于2KB。POST传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
e. GET安全性非常低,POST安全性较高。但是执行效率却比POST方法好。

11、浏览器渲染操作的顺序?

(1) 解析HTML结构。
(2) 加载外部脚本和样式表文件。
(3) 解析并执行脚本代码。
(4) 构造HTML DOM模型。
(5) 加载图片等外部文件。
(6) 页面加载完毕。
load事件必须等到网页中所有内容全部加载完毕之后才被执行。如果一个页面中包含了大容量的多媒体文件,则就会出现这种情况:网页文档已经呈现出来,但由于网页数据还没有完全加载完毕,导致load事件不能够即时被触发。