【面试】前端面试题
2018-11-20 03:17:46来源:博客园 阅读 ()
1. typeto(obj) === "srting" 2. typeTo obj === "string" 3. obj.constructor === string
a: str = str.replace(/\s*/g,"") //去掉所有空格 b: str = str.replace(/^\s|\s$/g,"") // 去掉两边的空格 c: str = str.replace(/^\s/,"") // 去掉左边的空格 d: str = str.replace(/\s$/g,"") // 去掉后面的空格
a: str = str.trim(str) // 缺点无法去掉中间的空格 b: str.trimLeft() str.trimRight() // 去除左右的空格
a: str = $.trim(str) // 缺点无法去掉中间的空格
function showWindowHref(){ var shHref = window.location.href var args = shHref.split('?') if(args[0] === shHref){ return "" } var arr = args[1].split('&') var obj = {} for(var i = 0 ; i < arr.length; i++){ var stg = arr[i].split('=') obj[stg[0]] = stg[1]; } return obj; } var href = showWindowHref(); var value = href['name']
-
concat() 将两个或者多个文本的字符串连接起来,返回一个新字符串。
-
indexOf() 返回字符在字符串的匹配位置。如果没有匹配到返回 -1 。
-
charAt() 返回指定位置的字符。
-
lastIndexOf() 返回匹配到的字符最后一次出现的位置。
-
match() 检查一个字符是否匹配到正则表达式。
-
substr() 返回从字符串的 startPos 位置开始。长度为 length的字符串。
-
substring() 返回字符串的一个子串。第一个参数是开始位置,第二个是结束位置。
-
slince() 提取字符串的一部分,返回一个新字符串。
-
replace() 用来查找匹配一个正则字符串,使用新字符串代替匹配字符串。
-
search() 执行一个正则表达式,如果匹配成功返回索引位置,如果没有成功返回 -1 。
-
split() 将一个字符串划分为一个字符串数组。
-
toLowerCase() 将整个字符串转成小写。
-
toUpperCase() 将整个字符串换成大写。
a: createDocumentFragment() // 创建一个DOM节点 b: createElement() // 创建一个具体元素 c:createTextNode() // 创建一个文本节点
a: appendChild() // 添加 b: removeChild() // 移除 c: replaceChild() // 替换 d: insertBefore() // 插入
a: getElementsByTagName() // 根据标签名称查找 b: getElementsByName() // 根据标签元素的Name 属性 c: getElementsById() // 根据标签的 id查找 唯一性
<input type="button" onclick=“showInfo(this);” value="点击一下" />
function Animal(name,color){ this.name = name; this.color = color; }
var sBtn = getElementById('#botton') sBtn.onclick = function(){ console.log(this.value) }
var number = [22,44,55,66,33,88,99] var applyNumber = Math.max.apply(this,number) console.log(applyNumber) var callNumber = Math.min.call(this,22,44,55,66,33,88,99) console.log(callNumber)
a instanceof b ? "true" : "false" var array = new Array() console.log(array instanceof Array); console.log(array instanceof Object);
function test(){} var a = new test() console.log(a instanceof test)
if (window instanceof Object){ alert('Y')} else { alert('N');} // 我的到的是true
var count = 10 function add(){ var count = 0 ; return function(){ console.log( count += 1); } } var s = add(); s(); s();
res.writeHead(200, { "Content-Type": "text/html; charset=UTF-8", "Access-Control-Allow-Origin":'http://localhost', 'Access-Control-Allow-Methods': 'GET, POST, OPTIONS', 'Access-Control-Allow-Headers': 'X-Requested-With, Content-Type' });
var fn1 = function(){ var obj = { name: "张三" } } var fn2 = function(){ var obj = {name: "张三"} return obj } var a = fn1(); var b = fn2();
function bindEvent(){ var obj = document.getElementById('test') obj.onclick = function(){ } } function bindEvent(){ var obj = document.getElementById('test') obj.onclick = function(){ } obj = null }
-
prototype 原型链继承
-
call/apply 继承
-
混合方法 (prototype 和 call /applay )
-
对象冒充
-
只继承原型链的继承
-
完美组合继承
-
Object.create 继承
function teacher(name){ this.name = name } teacher.prototype.sayName = function(){ console.log('name' + this.name) } var teacher1 = new teacher('张三') function student(name){ this.name = name } student.prototype = new teacher() var student1 = new student('李四') teacher1.sayName() student1.sayName()
function teacher(name,age){ this.name = name ; this.age = age; this.sayAge = function(){ console.log('内部方法') } } teacher.prototype.sayName = function(){ console.log('name' + this.name , "age" + this.age) } function student(){ var args = arguments teacher.call(this,args[0] ,args[1]); } var teacher1 = new teacher('张三' ,'25'); var student1 = new student('王五','26'); console.log(teacher1) console.log(student1) teacher1.sayName(); teacher1.sayAge(); //student1.sayName(); // 报错 student1.sayAge();
function teacher(name,age){ this.name = name ; this.age = age; this.sayAge = function(){ console.log('内部方法') } } teacher.prototype.sayName = function(){ console.log('name' + this.name , "age" + this.age) } function student(){ var args = arguments teacher.call(this,args[0] ,args[1]); } student.prototype = new teacher() var teacher1 = new teacher('张三' ,'25'); var student1 = new student('王五','26'); console.log(teacher1) console.log(student1) teacher1.sayName(); teacher1.sayAge(); student1.sayName(); // 不报错 由于继承下来了。 student1.sayAge();
-
对象冒充 (只能继承内部申明的函数,不能继承原型链上的方法)
function Teacher(name,age){ this.name = name; this.age = age; this.sayAge = function(){ console.log('对象方法') } } Teacher.name = "牛逼" Teacher.sayName = function(){ console.log('name'+ this.name + '静态方法' ) } Teacher.prototype.sayAAA = function(){ console.log('prototype -- teacher') } function Student(name,age){ this.student = Teacher ; this.student(name,age); delete this.student ; } // Student.prototype.sayAAA = function(){ // console.log('student') // } var teacher1 = new Teacher('张三','17'); var student1 = new Student('李四','25'); // console.log(teacher1) teacher1.sayAAA(); student1.sayAAA();
-
只继承原型链的继承(无法继承内部函数)
function teacher(name){ this.name = name } teacher.prototype.sayName = function(){ console.log('name' + this.name) } var teacher1 = new teacher('张三') function student(name){ this.name = name } student.prototype = teacher.prototype var student1 = new student('李四') teacher1.sayName() student1.sayName()
-
完美组合继承
function teacher(name,age){ this.name = name ; this.age = age; this.sayAge = function(){ console.log('内部方法') } } teacher.prototype.sayName = function(){ console.log('name' + this.name , "age" + this.age) } function student(){ var args = arguments teacher.call(this,args[0] ,args[1]); } student.prototype = teacher.prototype var teacher1 = new teacher('张三' ,'25'); var student1 = new student('王五','26'); console.log(teacher1) console.log(student1) teacher1.sayName(); teacher1.sayAge(); student1.sayName(); // 不报错 由于继承下来了。 student1.sayAge();
function teacher(name){ this.name = name this.sayAge = function(){ console.log('内部方法') } } teacher.prototype.sayName = function(){ console.log('prototype') } function student(name){ this.name = name } student.prototype = Object.create(teacher.prototype) var student1 = new student('张三') console.log(student1) student1.sayAge(); // 报错 student1.sayName(); // prototype
var str = 'asdfssaaasasasasaa' var json = {} for(var i = 0 ; i < str.length ; i++){ if(!json[str[i]]){ json[str[i]] = 1 }else{ json[str[i]]++ } } var iMax = 0; var iIndex = "" for( key in json){ if(json[key] > iIndex){ iIndex = json[key]; iMax = key } } console.log('出现次数最多的是:'+iMax+'出现'+iIndex+'次');
var arr = [0,2,3,4,4,0,2]; var obj = {}; var tmp = []; for(var i = 0 ;i< arr.length;i++){ if( !obj[arr[i]] ){ obj[arr[i]] = 1; tmp.push(arr[i]); } } console.log(tmp); 结果如下: [0, 2, 3, 4]
var arr = [2,3,4,4,5,2,3,6], arr2 = []; for(var i = 0;i< arr.length;i++){ if(arr2.indexOf(arr[i]) < 0){ arr2.push(arr[i]); } } console.log(arr2); 结果为:[2, 3, 4, 5, 6]
HTML & CSS:
-
父元素设置: position:relative ;
function trim(str){ if(str && typeof str === "string"){ return str.replace(/(\^s*)| (s*)$ /g ,""); } }
-
邮箱校验
var reg = /^(\w)+(\.\w+)*@(\w)+((\.\w{2,3}){1,3})$/; var email = "example@qq.com"; console.log(reg.test(email)); // true
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- js常见面试题 2019-08-14
- 【前端】前端面试题整理 2019-08-14
- Vue.js常被提及的面试题 2019-08-14
- js继承的几种方式 2019-08-14
- JavaScript面试核心考点(精华) 2019-08-14
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash