前端面试题汇总与解答

什么是AJAX?

A=异步
J=JavaScript
A=and
X=XML
使用AJAX的网页,内容是异步加载的。
没有使用AJAX的网页,在网页完全打开的时候,加载就完成了。
除非刷新或重新载入这个网页,浏览器不会再向服务器发出请求,内容也不会再发生变化。
以查看某支股票的股价为例。
过去没有AJAX时,网页会10秒定时刷新。
使用AJAX,只需要改变很小一部分内容就好可以了(甚至只是几个数字)。
数据量明显减少,对降低服务器端负载、缩短用户端等待时间都有好处。

A:异步,已经解释过。
J:浏览器端编程语言中,JavaScript是绝对的主导地位。
A:并列关系。
X:在出现HTML5之前,当时很多网页以XHTML为标准。XHTML基于XML。通过Javascript控制网页内容,实际就是针对XML进行DOM操作。

简述BOM对象模型的对象及方法

对象
window
+location
+document
+navigator
+frames
+screen
+history
方法
alert() 显示带有一段消息和一个确认按钮的警告框。
blur() 把键盘焦点从顶层窗口移开。
clearInterval() 取消由 setInterval() 设置的 timeout。
clearTimeout() 取消由 setTimeout() 方法设置的 timeout。
close() 关闭浏览器窗口。
confirm() 显示带有一段消息以及确认按钮和取消按钮的对话框。
createPopup() 创建一个 pop-up 窗口。
focus() 把键盘焦点给予一个窗口。
moveBy() 可相对窗口的当前坐标把它移动指定的像素。
moveTo() 把窗口的左上角移动到一个指定的坐标。
open() 打开一个新的浏览器窗口或查找一个已命名的窗口。
print() 打印当前窗口的内容。
prompt() 显示可提示用户输入的对话框。
resizeBy() 按照指定的像素调整窗口的大小。
resizeTo() 把窗口的大小调整到指定的宽度和高度。
scroll()
scrollBy() 按照指定的像素值来滚动内容。
scrollTo() 把内容滚动到指定的坐标。
setInterval() 按照指定的周期(以毫秒计)来调用函数或计算表达式。
setTimeout() 在指定的毫秒数后调用函数或计算表达式。

javascript全局函数

以前没搞懂JS的全局函数,全局函数和window对象的函数不一样。
全局函数不属于任何一个内置对象。
JS包含以下7个全局函数,用于一些常用的功能:escape(),eval(),isNan(),isFinite(),parseFloat(),parseInt(),unescape();

跨域请求

document.domain+iframe方法
www.a.com上的a.html

document.domain = 'a.com';
var ifr = document.createElement('iframe');
ifr.src = 'http://script.a.com/b.html';
ifr.style.display = 'none';
document.body.appendChild(ifr);
ifr.onload = function(){
    var doc = ifr.contentDocument || ifr.contentWindow.document;
    // 在这里操纵b.html
    alert(doc.getElementsByTagName("h1")[0].childNodes[0].nodeValue);
};
script.a.com上的b.html

script.a.com上的b.html

document.domain = 'a.com';

写一个函数判断对象类型

var is ={
    types : ["Array", "Boolean", "Date", "Number", "Object", "RegExp", "String", "Window", "HTMLDocument"]
};
for(var i = 0, c; c = is.types[i ++ ]; ){
    is[c] = (function(type){
        return function(obj){
           return Object.prototype.toString.call(obj) == "[object " + type + "]";
        }
    )(c);
}

用面向对象的js代码进行自我介绍

function extend(sup, overrides) {
    var sub = overrides && overrides.constructor || function() {
        sup.apply(this, arguments);
    };
    var fn = function() {};
    var subp;
    fn.prototype = new sup;
    subp = sub.prototype = fn.prototype;
    subp.constructor = sub;
    apply(subp, overrides);
    sub.superClass = sup.prototype;
    return sub;
}

function apply(o, c) {
    if (o && c && typeof c == 'object') {
        for (var p in c) {
            o[p] = c[p];
        }
    }
    return o;
}

function FrontEnder() {
    this.skills = ['HTML', 'CSS', 'JavaScript'];
}

apply(FrontEnder.prototype, {
    code: function() {
        console.log('我能编写处理业务逻辑代码');
    },
    paint: function() {
        console.log('我能还原设计稿');
    },
    debug: function() {
        console.log('我能使用工具调试代码');
    }
});

var Me = extend(FrontEnder, {
    constructor: function() {
        // 个人的性格是怎么样的?等完善
        var _character = '';
        return function Me(config) {
            config = config || {};
            Me.superClass.constructor.call(this);
            this.skills = this.skills.concat(['HTML5', 'CSS3', 'Grunt', 'Zepto', 'Webapp', 'ChromeDevtool']);
            apply(this, config);
        }
    }(),
    paint: function() {
        Me.superClass.paint.call(this);
        console.log('我可以用CSS3、HTML5还原设计稿');
    },
    code: function() {
        Me.superClass.code.call(this);
        console.log(function() {
            /**
            1. 根据规范来命名如驼峰、_、$等;
            2. 使用闭包来避免变量污染;
            3. 相同处理逻辑代码抽出来作为一个功能模块;
            4. 避免与HTML、CSS产生耦合;
            5. 注意代码的性能优化
            */
        }.toString().split('n').slice(2, -2).toString().replace(/t/g, '').split(',').join('n'))
    },
    manage: function() {
        console.log('我有一个属于自己的代码库和记录知识点的博客');
    },
    habit: function() {
        console.log('twitter、HTML5Rock、CSS3-trick、W3.org...');
    },
    enjoy: function() {
        console.log('我喜欢打篮球和看NBA,最喜欢的球员是Steve·Nash');
    }
});

var me = new Me({
    ChineseName: '张楷豪',
    EnglishName: 'monkindey',
    Birthday: '1993-07',
    Email: 'monkindey@163.com',
    School: '广东工业大学计算机学院网络工程 11级'
});

console.dir(me);

写一个函数设置cookies

function getCookies(name){
    var cookieKeyValueArray = document.cookie.split(";")
    for (var i = 0; i < cookieKeyValueArray.length; i++) {
        var arr = cookieKeyValueArray[i].split("=");
        if (arr[0] == name){
                return arr[1];
        }
    }
}

写一个函数读取cookies

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值